mypqueue
Version:
My Implementation of a Concurrent Promise Queue
28 lines (27 loc) • 965 B
TypeScript
import { Logger } from "winston";
export type PromiseSupplier<T> = () => Promise<T>;
export interface QueueOptions {
maxNumberOfConcurrentPromises?: number;
unitOfTimeMillis?: number;
maxThroughputPerUnitTime?: number;
}
export declare class MyConcurrentPromiseQueue<T> {
private readonly maxNumberOfConcurrentPromises;
private readonly unitOfTimeMillis;
private readonly maxThroughputPerUnitTime;
private promisesToExecute;
private promisesBeingExecuted;
private promiseExecutedCallbacks;
private promiseCompletedTimesLog;
protected logger_: Logger;
constructor(options?: QueueOptions);
numberOfQueuedPromises(): number;
numberOfExecutingPromises(): number;
addPromise(promiseSupplier: PromiseSupplier<T>): Promise<T | null>;
private execute;
private canExecuteMorePromises;
private onPromiseFulfilled;
private onPromiseRejected;
private finalizePromise;
turnOffLogger(): void;
}