2.2.5 • Published 6 years ago

promise-queue v2.2.5

Weekly downloads
760,980
License
MIT
Repository
github
Last release
6 years ago

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

@remote.it/serverless@fatihkydev/gatsby-source-datocmsziflow-js-microservicebig-pink-import-testsop-cdmamocrm-js-rn@snyk/snyk-devserverless-fork-upload-ioquantconnect-clifiletapeexpo-compatibility-checksuper-updater@pasarprotocol/pasar-sdk@infinitebrahmanuniverse/nolb-promise-serverless@everything-registry/sub-chunk-2481@gatsbyjs/gatsby-source-datocmsyrwix-code-mlswalkman-govuexblazeuac-serverless-composeuilicious-cliyve-bot@heat/awsless@gordalina/magic-home@markwylde/liferaftfilecoin-lotus-clientrdf-store-sparqlqueue-event-emitterredis-expiryredis-serverreact-native-insta-photo-studioqualtrics-sdk-nodequincisatisfy-depsbrick-protocolsc-voicetips-twistedtplink-smarthome-apitransmutejssage-fiftysample-wch-node-connectorsample-wch-node-wrappersam-typescriptrollup-plugin-generate-image-sizesrollup-generate-image-sizesserverless-rabbitserverless-heybitsession-store-filesspace-clientsitewebsnmp-fiberhomething-it-device-lippert-parcel-stationthing-it-device-browserthomaschaaf-serverlessstackvalidator@foxglove/ws-protocol-examplesslsplusskippyjsrwkv-cpp-nodes3driverrvasiliy-pdfassemblersencha-hotswapscv-serverscv-ttsreact-router-page-transitionstore-ssm-parametersswgohtwistedtwisted-axiosumc-uits-rundeckturbostatusts-sshvelo-syncwpilib-ws-robot-romiwildspiderwin-grepdocpub@kalamazoo/webdriver-runner@kanreisa/homebridge-wave-plusfget-cli@lizc/pdfassemblerdstoolsebay-trading-api-promiseelectron-rxdbelsinore-ioelsinore-leveldbgatsby-source-datocmsgatsby-remark-bitly-linksgoogle-tag-manager-detectiongrunt-html-sniffergrunt-csscheckerfs-one-promise-queue@metacodelabs/janus-videoroom-web-sdkfzi-iota-showcase-tram-mockgcc-explorer@mobiletoll/serverlessgh-api-request
2.2.5

6 years ago

2.2.4

6 years ago

2.2.3

8 years ago

2.2.2

8 years ago

2.2.1

8 years ago

2.2.0

8 years ago

2.1.2

8 years ago

2.1.1

10 years ago

2.0.1

10 years ago

2.0.0

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago