@image/packer
Version:
image packer
47 lines (46 loc) • 1.34 kB
TypeScript
/**
* 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();
}