a-promise-queue

2.0.0 • Public • Published

a promise queue

Build Status Coverage Status

This is just another promise queue. Simple.

  • Native es6
  • With concurrency
  • Optional retry attempts for failed promises
  • Option to use your favourite promise flavour (Bluebird, Q)

Install

You know this:

npm install a-promise-queue --save

Interface

  • queue = new PromiseQueue([options], [Function callback]) Callback is fired whenever queue is emptied. If callback is not provided, queue will act as a promise which is resolved once queue is finished. Options:

    {
      promise: Promise, // the type of promises used. defaults to es6 native promises,
      concurrency: Number // set the number of promises to run in parallel.
    }
    
  • queue.length Returns number of promises waiting to be executed.

  • var promise = queue.add(Function generator, [Object options]) Returns a promise which is resolved or rejected when the promise produced by the generator is eventually resolved. Example options:

      {
        attempts: number, // if promise fails it will retry this many times.
        priority: number, // execution is ordered by priority default = 0.
      }
  • var promise = queue.flush() Runs all promises currently in the queue concurrently. Returns a promise which is resolved when all promises are finished. Any promises added after .flush() will execute after flush is complete.

Example:

var PromiseQueue = require('a-promise-queue');
 
var delay = (ms) => () => new Promise(resolve => setTimeout(resolve, ms));
 
var queue = new PromiseQueue(() => console.log('Queue is empty'));
queue.add(delay(100)).then(() => console.log('first this'));
queue.add(() => Promise.reject('then this fails')).catch((e) => console.log('Errored:', e));
queue.add(delay(10)).then(() => console.log('and this succeeds'));
queue.add(delay(10), { priority: 1 }).then(() => console.log('but not before this one jumps the queue.'));

/a-promise-queue/

    Package Sidebar

    Install

    npm i a-promise-queue

    Weekly Downloads

    5

    Version

    2.0.0

    License

    ISC

    Unpacked Size

    14.7 kB

    Total Files

    7

    Last publish

    Collaborators

    • e-e-e