2.2.5 • Published 7 years ago

promise-queue v2.2.5

Weekly downloads
760,980
License
MIT
Repository
github
Last release
7 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-@everything-registry/sub-chunk-2481win-grepwix-code-mlsvuexblazewalkman-gowpilib-ws-robot-romiwildspiderstore-ssm-parametersswgohthing-it-device-browserthing-it-device-lippert-parcel-stationthomaschaaf-serverlessvelo-sync@dolchi21/iqueue@rundeck/clientitdlibjamykaerukunl-rm-modulesncd-red-mcp3425stackvalidatorspace-clienttwistedtwisted-axiosuac-serverless-composeumc-uiuilicious-clitplink-smarthome-apitips-twistedtransmutejsturbostatus@amuslija/serverless@beautils/all@bref.sh/serverless@cellaflora/florad@chec/seeder@chenyufei2022/elastos-connectivity-sdk-js@chenyufei2022/hive-js-sdk@boris-turner/amphora-search@decoupled/xlibyryve-botts-rundeckts-ssh@eastsideco/escshopify@eastsideco/salvo-lite@heat/awsless@flamescape/service-bus-pubsub@flamescape/service-bus-rpc@fons/fons@hperchec/scorpion-ui@emigrad/announce@gatsbyjs/gatsby-source-datocms@elastosfoundation/elastos-connectivity-sdk-js@elastosfoundation/hive-js-sdk@forlagshuset/fetch-manager@foxglove/ws-protocol-examples@gordalina/magic-home@labshare/request-tracking-api@lizc/pdfassembler@markwylde/liferaft@erii/mirakurun@elabox/elastos-connectivity-sdk-js@elabox/hive-js-sdk@metacodelabs/janus-videoroom-web-sdk@mobiletoll/serverless@kanreisa/homebridge-wave-plus@kalamazoo/webdriver-runner@jlenon7/zedjs@rasahq/gatsby-source-datocms@publicdomain/serverless@prometeia/pdfassembler@saltcorn/nominatim-geocode@paulcbetts/electron-rxdb@rodrigogs/serverless@spryrocks/react-apimtfos-h5p-nodejs-librarymobileappmongodmiksermirakurunminecraft-wrapminecraft-wrap-fabricncd-red-ads1115ncd-red-ads7828ncd-red-ams5812
2.2.5

7 years ago

2.2.4

7 years ago

2.2.3

9 years ago

2.2.2

9 years ago

2.2.1

9 years ago

2.2.0

10 years ago

2.1.2

10 years ago

2.1.1

11 years ago

2.0.1

11 years ago

2.0.0

11 years ago

1.0.1

11 years ago

1.0.0

11 years ago