Package Exports
- promise-pool-ext
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (promise-pool-ext) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
promise-pool-ext
Queue promises into pool limiting concurrency
Install
Install with npm:
$ npm install --save promise-pool-ext
Usage
const { Pool } = require('promise-pool-ext');
const pool = Pool({ concurrency: 10 });
// queue array of functions, returns Promise < array of function results >
pool([
() => new Promise((resolve) => { /* do async logic here */ }),
async () => { /* do async logic here */ }
]);
// queue function, returns Promise < function result >
pool(async () => { /* do async logic here */ });
const { PoolManager } = require('promise-pool-ext');
const manager = PoolManager({
check1: {
if: () => false, // when not true returned, promise is not resolved and undefined is returned
fn: () => { /* return async logic */ }
},
check2: {
requires: ['check1'],
fn: ({ check1 }) => {
if (check1) { /* return async logic */ }
}
},
data: {
requires: ['check1', 'check2'],
fn: ({ check1, check2 }) => {
if (check1 && check2) { /* return async logic */ }
}
}
}, { concurrency: 10 });
// returns Promise < data.fn result >
manager.get('data');
See tests for more examples
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.