call-parallel
v1.0.4
Published
Call an array of functions in parallel (allow set the limit number of tasks executing at the same time)
Downloads
11
Maintainers
Readme
call-parallel
Call an array of functions in parallel (allow set the limit number of tasks executing at the same time)
ES6 and async/await
syntax support (Node 7.6.0+).
Usage
parallel(tasks)
Run the tasks
array of functions in parallel with a maximum of limit
tasks executing
at the same time (if passed), without waiting until the previous function has completed.
If any of the functions pass an error to it's callback, the main is immediately fulfilled
with the value of the error. Once the tasks
have completed, the results are passed to
the result array.
Note that the tasks are not executed in batches, so there is no guarantee that the first limit tasks will complete before any others are started.
It is also possible to use an object instead of an array. Each property will be run as a function and the results will be passed to the final object instead of an array. This can be a more readable way of handling the results.
Arguments
tasks
- An array or object containing functions to run. Each function is passed acallback(err, result)
which it must call on completion with an errorerr
(which can benull
) and an optionalresult
value.limit
- The maximum number oftasks
to run at any time. Default0
– no limit.
Return
Promise, which will be fulfilled, when all the functions have completed. It's gets an object with err property and results array (or object) containing all the result arguments passed to the task callbacks.
Example
'use strict';
const parallel = require('call-parallel');
(async() => {
// the results array will equal ['one','two'] even though
// the second function had a shorter timeout
console.log(await parallel([
callback => setTimeout(() => callback(null, 'one'), 500),
callback => setTimeout(() => callback(null, 'two'), 100)
]));
})();
This module is basically equivalent to
run-parallel
, but it's not support async/await
.
See also
License
MIT. Copyright (c) Anton Kenikh.