Promise queue with timeouts and promise cleanup after expiration.
Reduce threads associated with forked processes by throttling the creating of processes.
timeout-promise-queue
can be installed using npm
:
npm install timeout-promise-queue
PromiseQueue(Number maxConcurrent): Queue
Queue#add(Function promseGenerator, [Number timeout, [rejection]]): Promise
- calls function to generate a promise to add to the queue- `promiseGenerator([EventEmitter cancel]): Promise - generate a promise to add to the queue
- if
timeout
is defined,promseGenerator
is called with an EventEmitter which will get a'timeout'
event iftimeout
is exceeded. Ifrejection
is not defined, timeouts callreject(Error('timeout of ' + timeout + ' exceeded'))
Ifrejection
is defined, it generates the timeout error.rejection
must be one of:- if
rejection
is function, timouts callreject(rejection())
. - otherwise timouts call
reject(rejection)
.
- if
Queue#size(): Number
- returns number of pending promises
const Queue = require('timeout-promise-queue').PromiseQueue(25) // allow 25 concurrent promises
Promise.all([
Queue.add(cancel => cancellable(cancel)),
Queue.add(cancel => cancellable(cancel)),
Queue.add(cancel => cancellable(cancel))...,
]).then(l => {console.log('done') })