Wrapper for promises to allow to defer the execution.
None. It only requires Promise capable version javascript interpreter. e.g. Node version(8 and higher)
$ npm -v && node -v
6.4.1
v8.16.0
clone the repository
git clone git@github.com:webduvet/promise-q.git
and from inside run the usual.
$ npm run test
$ npm run build
BEFORE YOU INSTALL: please read the prerequisites
It is standard npm package:
$ cd npm-project
$ npm install promise-q
Inside your project:
import {
PrmsQ
} from 'promise-q'
const promiseArray = new Array(...new Array(50)).map(fnReturningPromise);
// 0.1s between calls and max 5 pending promises
const pq = new PrmsQ(promiseArray, 100, 5)
pq.start();
There is an example to be found in /src/example/array-fn.js
which demonstrates throttling 50 asynchronous calls.
The promise-Q object is created with the constructor and it takes 3 arguments
() => Promise<T>[]
- array of functions returning Promise such as http call, REST call etc.
Number
- delay between individual calls, e.g. if spawning 50, 100 or 1000 calls at the same time is not desired. If not provided, the default value is 100 mls.
Number
- Queue or buffer size. This is the maximum number of currently pending Promises. Once this number is reached, the execution of the next function is paused until the at least one of the pending Promises is settled.
- If not provided the default value is undefined which means no limit on queue size.
get PrmsQ.promises()
- getter method to return the array of all promises
PrmsQ.start()
- starts the execution.
PrmsQ.on(event, callback): unsubscribeFn
- hook to register event. Library currently supports two events.
- - start: when the PrmsQ.start is triggerd
- - done: when all Promises are either `pending` or `settled`
- returns convenient *unsubscribe* function
- NOTE: if you require to run callback when all promises are settled you can just run `Promise.allSettled(pq.promises)`
PrmsQ.off(event, callback)
- unregister callback from an event. The same reference needs to be used.
$ npm test
$ npm run build
This task will create a distribution version of the project
inside your local dist/
folder
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Add your changes:
git add .
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request 😎
TODO: Write credits
We use SemVer for versioning. For the versions available, see the tags on this repository.
- Andrej Bartko - Initial work - AndrejBartko
See also the list of contributors who participated in this project.
MIT License © 2012-2022 Scott Chacon and others