Skip to content
async parallel/serial foreach in JavaScript
Branch: master
Clone or download
Latest commit 649c17d Mar 21, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dist first release Mar 14, 2019
src
.gitignore first release Mar 14, 2019
LICENSE
README.md
package-lock.json first release Mar 14, 2019
package.json v1.0.2 Mar 14, 2019
webpack.config.js

README.md

Asynchronous forEach

A Symbol based Array.prototype extension that enable asynchronous declarative iteration on arrays and array-like objects. The following two extensions adhere to the Array.prototype.forEach syntax.

$ npm i --save asynchronousforeach

Asynchronous Serial forEach

This function invokes the callback passed to it on each array's value, but one by one, waiting the completion of all the async operations contanined into the callback before passing to the next value. When the callback returns on the last call, the promise returned by the async forEach will complete with the undefined value.

const {
    asyncSerialForEach,
} = require('asynchronousforeach');
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));

const array = [1, 2, 3, 4, 5];

(async() => {
    await array[asyncSerialForEach](async v => (await delay(1000), console.log(v)));
    console.log('done');
})();

In the previous example we can see that each value contained into the array will be printed with a time span of one second from each other. Then we will see done printed on the console.

Asynchronous Parallel forEach

This function invokes the callback passed to it on each array's value, in parallel (from an async perspective). The async operations contained into the callback won't be waited before passing to the next value. When each promise returned by each call will fulfill, the promise returned by the async forEach will complete with the undefined value.

const {
    asyncParallelForEach,
} = require('asynchronousforeach');
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));

const array = [1, 2, 3, 4, 5];

(async() => {
    await array[asyncParallelForEach](async v => (await delay(1000), console.log(v)));
    console.log('done');
})();

In the previous example we can see that all the values will be printed, in order, after 1 second. Then we will see done printed on the console.

You can’t perform that action at this time.