@dfinity/assets
Version:
JavaScript and TypeScript library to manage assets on the Internet Computer
26 lines • 748 B
JavaScript
/**
* Minimal promise executor with concurrency limit implementation
* @param concurrency Maximum number of promises executed concurrently
*/
export const limit = (concurrency) => {
const queue = [];
let active = 0;
const next = () => {
if (active < concurrency && queue.length > 0) {
active++;
const { fn, resolve, reject } = queue.shift() ?? {};
fn?.()
.then(resolve)
.catch(reject)
.then(() => {
active--;
next();
});
}
};
return (fn) => new Promise((resolve, reject) => {
queue.push({ fn, resolve, reject });
next();
});
};
//# sourceMappingURL=limit.js.map