@push.rocks/smartpromise
Version:
A TypeScript library for managing promises and Deferred constructs, simplifying asynchronous programming.
27 lines • 2.05 kB
JavaScript
import { defer } from "./smartpromise.classes.deferred.js";
export class CumulativeDeferred {
constructor() {
this.accumulatedPromises = [];
this.deferred = defer();
this.promise = this.deferred.promise;
setTimeout(async () => {
while (this.accumulatedPromises.length > 0) {
const poppedPromise = this.accumulatedPromises.shift();
await poppedPromise;
}
this.deferred.resolve();
}, 0);
}
subDefer() {
const done = defer();
this.addPromise(done.promise);
return done;
}
addPromise(promiseArg) {
this.accumulatedPromises.push(promiseArg);
}
}
export const cumulativeDefer = () => {
return new CumulativeDeferred();
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRwcm9taXNlLmNsYXNzZXMuY3VtdWxhdGl2ZWRlZmVycmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRwcm9taXNlLmNsYXNzZXMuY3VtdWxhdGl2ZWRlZmVycmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUzRCxNQUFNLE9BQU8sa0JBQWtCO0lBSzdCO1FBSlEsd0JBQW1CLEdBQW1CLEVBQUUsQ0FBQztRQUN6QyxhQUFRLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDcEIsWUFBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBR3JDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdkQsTUFBTSxhQUFhLENBQUM7WUFDdEIsQ0FBQztZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxVQUFVLENBQUMsVUFBd0I7UUFDeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUFHRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFO0lBQ2xDLE9BQU8sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0FBQ2xDLENBQUMsQ0FBQSJ9