UNPKG

mypqueue

Version:

My Implementation of a Concurrent Promise Queue

28 lines (27 loc) 965 B
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; }