asyncitt
Make array iteration easy with async/await
- Same functionality as the ES5 Array iteration methods
- All the methods return a
Promise
, making them awaitable - Allow the usage of async functions as callback
- Callbacks run in parallel
- Lightweight (no prd dependencies)
Install
$ npm install --save asyncitt
Usage
const { map } = require('asyncitt');
async function example () {
const foo = await map([1, 2, 3], async (num) => {
const result = await asyncCall();
return num * result;
});
const bar = await map([1, 2, 3], (num) => asyncCall2(num));
}
API
Check the JavaScript reference for details about the API, they use the same syntax, but all return a Promise
.
Excepting reduce
, all methods callbacks are run in parallel. There is a series version of each method, called: ${methodName}Series
. Series methods use the same API that their respective parallel ones.
forEach(array, callback, [thisArg])
docs
map(array, callback, [thisArg])
docs
find(array, callback, [thisArg])
docs
findIndex(array, callback, [thisArg])
docs
some(array, callback, [thisArg])
docs
every(array, callback, [thisArg])
docs
filter(array, callback, [thisArg])
docs
reduce(array, callback, [initialValue])
docs
Instance methods
Extending native objects is discouraged and I don't recommend it, but in case you know what you are doing, you can extend Array.prototype
to use the above methods as instance methods. They have been renamed as async${MethodName}
so the original ones are not overwritten.
const { instanceMethods } = require('asyncitt');
Object.assign(Array.prototype, instanceMethods);
async function example () {
const foo = await [1, 2, 3].asyncMap((num) => asyncCall(num));
}
License
MIT © Antonio V