promise-pool-ext
Queue promises into pool limiting concurrency
Install
Install with npm:
$ npm install --save promise-pool-ext
Usage
Pool
const { Pool } = require('promise-pool-ext');
const pool = Pool({ concurrency: 10 });
pool([
() => new Promise((resolve) => { }),
async () => { }
]);
pool(async () => { });
See tests for more examples
PoolManager
const { PoolManager } = require('promise-pool-ext');
const manager = PoolManager({
check1: {
if: () => false,
fn: () => { }
},
check2: {
requires: ['check1'],
fn: ({ check1 }) => {
if (check1) { }
}
},
data: {
requires: ['check1', 'check2'],
fn: ({ check1, check2 }) => {
if (check1 && check2) { }
}
}
}, { concurrency: 10 });
manager.get('data');
See tests for more examples
Parameters
concurrency: Integer
How many promises can resolve in parallel.
timeout: Integer = undefined
Maximum amount of time in ms that a promise can take to resolve before a failure is returned.
If 0
or undefined
is passes, no timeout is enforced.
Errors
When a promise is rejected or an error is thrown,
the returned promise is rejected once all promises in batch have completed execution.
Why
As an example, when making a lot of external requests one can hit limits of the external API or the node runtime itself.
This library makes it easy to limit the amount of parallel executions.