UNPKG

@image/packer

Version:
47 lines (46 loc) 1.34 kB
/** * It limits concurrently executed promises * @example * * var queue = new Queue(1); * * queue.add(function () { * // resolve of this promise will resume next request * return downloadTarballFromGithub(url, file); * }) * .then(function (file) { * doStuffWith(file); * }); * * queue.add(function () { * return downloadTarballFromGithub(url, file); * }) * // This request will be paused * .then(function (file) { * doStuffWith(file); * }); */ export default class PromiseQueue { private queue; private maxQueuedPromises; private pendingPromises; private maxPendingPromises; /** * @param [maxPendingPromises=Infinity] max number of concurrently executed promises * @param [maxQueuedPromises=Infinity] max number of queued promises */ constructor(maxPendingPromises?: number, maxQueuedPromises?: number); add<T>(promiseGenerator: () => Promise<T>): Promise<T>; /** * Number of simultaneously running promises (which are resolving) */ getPendingLength(): number; /** * Number of queued promises (which are waiting) */ getQueueLength(): number; /** * @returns true if first item removed from queue */ private _dequeue(); }