Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sindresorhus/each-async
Async concurrent iterator (async forEach)
https://github.com/sindresorhus/each-async
Last synced: 3 months ago
JSON representation
Async concurrent iterator (async forEach)
- Host: GitHub
- URL: https://github.com/sindresorhus/each-async
- Owner: sindresorhus
- License: mit
- Created: 2013-12-01T23:05:38.000Z (about 11 years ago)
- Default Branch: main
- Last Pushed: 2023-10-30T15:46:06.000Z (about 1 year ago)
- Last Synced: 2024-10-29T10:48:59.416Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 17.6 KB
- Stars: 110
- Watchers: 8
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: license
- Security: .github/security.md
Awesome Lists containing this project
- awesome-nodejs-cn - each-async - 异步并发迭代器,如 forEach (包 / 流程控制)
- awesome-nodejs - each-async - Async concurrent iterator (async forEach) - ★ 104 (Control flow)
- awesome-node - each-async - Async concurrent iterator like forEach. (Packages / Control flow)
- awesome-nodejs-cn - each-async - 异步并发迭代器,如forEach. (目录 / 流程控制)
README
# each-async
> Async concurrent iterator (async forEach)
Like [async.each()](https://github.com/caolan/async#eacharr-iterator-callback), but tiny.
I often use `async.each()` for doing async operations when iterating, but I almost never use the other gadzillion methods in `async`.
Async iteration is one of the most used async control flow patterns.
**I would strongly recommend using promises instead. You could then use the built-in [`Promise.all()`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/all), or [`p-map`](https://github.com/sindresorhus/p-map) if you need concurrency control.**
## Install
```
$ npm install --save each-async
```## Usage
```js
const eachAsync = require('each-async');eachAsync(['foo','bar','baz'], (item, index, done) => {
console.log(item, index);
done();
}, error => {
console.log('finished');
});
//=> 'foo 0'
//=> 'bar 1'
//=> 'baz 2'
//=> 'finished'
```## API
### eachAsync(input, callback, [finishedCallback])
#### input
Type: `Array`
Array you want to iterate.
#### callback(item, index, done)
Type: `Function`
Called for each item in the array with the following arguments:
- `item`: the current item in the array
- `index`: the current index
- `done([error])`: call this when you're done with an optional error. Supplying anything other than `undefined`/`null` will stop the iteration.Note that order is not guaranteed since each item is handled concurrently.
#### finishedCallback(error)
Type: `Function`
Called when the iteration is finished or on the first error. First argument is the error passed from `done()` in the `callback`.
## License
MIT © [Sindre Sorhus](https://sindresorhus.com)