promise-queue
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/promise-queue package

    2.2.5 • Public • Published

    promise-queue NPM Version Build Status Coverage Status Dependency Status

    Promise-based queue

    Installation

    promise-queue can be installed using npm:

    npm install promise-queue
    

    Interface

    • new Queue(Number maxConcurrent, Number maxQueued): Queue
    • Queue#add(Function generator): Promise - adds function argument that generates a promise to the queue
    • Queue#getQueueLength(): Number - returns current length of buffer(added but not started promise generators) it <= maxQueued
    • Queue#getPendingLength(): Number - returns number of pending(concurrently running) promises it <= maxConcurrent

    Example

    Configure queue

    By default Queue tries to use global Promises, but you can specify your own promises.

    Queue.configure(require('vow').Promise);

    Or use old-style promises approach:

    Queue.configure(function (handler) {
        var dfd = $.Deferred();
        try {
            handler(dfd.resolve, dfd.reject, dfd.notify);
        } catch (e) {
            dfd.reject(e);
        }
        return dfd.promise();
    });

    Queue one by one example

    var maxConcurrent = 1;
    var maxQueue = Infinity;
    var queue = new Queue(maxConcurrent, maxQueue);
     
    app.get('/version/:user/:repo', function (req, res, next) {
        queue.add(function () {
            // Assume that this action is a way too expensive
            // Call of this function will be delayed on second request
            return downloadTarballFromGithub(req.params);
        })
        .then(parseJson('package.json'))
        .then(function (package) {
            res.send(package.version);
        })
        .catch(next);
    });

    Getting number of pending promises and queue(buffered promises) length

    var maxConcurrent = 1;
    var maxQueue = 1;
    var queue = new Queue(maxConcurrent, maxQueue);
     
    queue.add(function () {
        queue.getQueueLength() === 0;
        queue.getPendingLength() === 1;
        return somePromise();
    });
     
    queue.add(function () {
        queue.getQueueLength() === 0;
        queue.getPendingLength() === 0;
        return somePromise();
    });
     
    queue.getQueueLength() === 1;
    queue.getPendingLength() === 1;

    Live example

    Keywords

    none

    Install

    npm i promise-queue

    DownloadsWeekly Downloads

    753,989

    Version

    2.2.5

    License

    MIT

    Last publish

    Collaborators

    • azproduction