https://github.com/e-e-e/a-promise-queue
A native es6 promise queue with optional retry attempts.
https://github.com/e-e-e/a-promise-queue
Last synced: 10 months ago
JSON representation
A native es6 promise queue with optional retry attempts.
- Host: GitHub
- URL: https://github.com/e-e-e/a-promise-queue
- Owner: e-e-e
- Created: 2017-06-23T11:38:14.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-06-23T05:47:23.000Z (over 7 years ago)
- Last Synced: 2025-04-18T12:18:02.014Z (11 months ago)
- Language: JavaScript
- Size: 12.7 KB
- Stars: 9
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# a promise queue
[](https://travis-ci.org/e-e-e/a-promise-queue) [](https://coveralls.io/github/e-e-e/a-promise-queue?branch=master)
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:
```js
{
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:
```js
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.'));
```