smartpromise/ts/smartpromise.classes.cumulativedeferred.ts
2023-04-04 20:35:54 +02:00

26 lines
645 B
TypeScript

import { defer } from "./smartpromise.classes.deferred.js";
export class CumulativeDeferred {
private accumulatedPromises: Promise<any>[] = [];
private deferred = defer();
public promise = this.deferred.promise;
constructor() {
setTimeout(async () => {
while (this.accumulatedPromises.length > 0) {
const poppedPromise = this.accumulatedPromises.shift();
await poppedPromise;
}
this.deferred.resolve();
}, 0);
}
public addPromise(promiseArg: Promise<any>) {
this.accumulatedPromises.push(promiseArg);
}
}
export const cumulativeDefer = () => {
return new CumulativeDeferred();
}