@vates/async-each
Run async fn for each item in (async) iterable
Install
Installation of the npm package:
> npm install --save @vates/async-each
Usage
asyncEach(iterable, iteratee, [opts])
Executes iteratee
in order for each value yielded by iterable
.
Returns a promise wich rejects as soon as a call to iteratee
throws or a promise returned by it rejects, and which resolves when all promises returned by iteratee
have resolved.
iterable
must be an iterable or async iterable.
iteratee
is called with the same this
value as asyncEach
, and with the following arguments:
-
value
: the value yielded byiterable
-
index
: the 0-based index for this value -
iterable
: the iterable itself
opts
is an object that can contains the following options:
-
concurrency
: a number which indicates the maximum number of parallel call toiteratee
, defaults to10
. The value0
means no concurrency limit. -
signal
: an abort signal to stop the iteration -
stopOnError
: wether to stop iteration of first error, or wait for all calls to finish and throw anAggregateError
, defaults totrue
import { asyncEach } from '@vates/async-each'
const contents = []
await asyncEach(
['foo.txt', 'bar.txt', 'baz.txt'],
async function (filename, i) {
contents[i] = await readFile(filename)
},
{
// reads two files at a time
concurrency: 2,
}
)
Contributions
Contributions are very welcomed, either on the documentation or on the code.
You may:
- report any issue you've encountered;
- fork and create a pull request.