Make array iteration easy with async/await and promises
- Same functionality as the ES5 Array iteration methods we all know
- All the methods return a
Promise
, making them awaitable and thenable - Allow the usage of async functions as callback
- Callbacks run in parallel
- Lightweight (no prd dependencies)
$ npm install --save asyncitt
Smooth asynchronous iteration using async/await
:
const { map } = require('asyncitt');
async function example () {
// map passing an async function as callback
const foo = await map([1, 2, 3], async (num) => {
const result = await asyncCall();
return num * result;
});
// map passing a non-async function as callback that returns a Promise
const bar = await map([1, 2, 3], (num) => asyncCall2(num));
}
All methods return a promise so they can just be used outside an async function:
const { map } = require('asyncitt');
map([1, 2, 3], (num) => asyncCall2(num)).then((foo) => {
// ...
});
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.
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));
}
MIT © Antonio V