for-each-async v0.1.1
ForEachAsync 
Asynchronous Array.forEach. The forEach() method executes a provided function once per array element.
Installation
$ npm install for-each-asyncSyntax
forEachAsync(array, iteratee, done[, thisArg])Parameters
arrayArray - The array to iterate through.iterateeFunction - The function to execute on each value in the array, taking four arguments:valAny - The current element being processed in the array.nInteger - The index of the current element being processed in the array.arrArray - The arrayforEachAsyncwas called upon.nextFunction - The function to call when you are ready to advance to the next element in the array.
doneFunction - The function called when the loop has finished.thisArgObject (Optional) - Value to use asthiswhen executing callback.
More information on how forEach works.
Examples
Asynchronously print the contents of an array.
The following code logs a line for each element in an array:
function logArrayElements(val, n, arr, next) { console.log('a[' + n + '] = ' + val); next(); } // Notice that index 2 is skipped since there is no item at // that position in the array. forEachAsync([2, 5, , 9], logArrayElements, () => { console.log('done'); }); // logs: // a[0] = 2 // a[1] = 5 // a[3] = 9 // doneAsynchronously using
thisArgThe following (contrived) example updates an object's properties from each entry in the array:
function Counter() { this.sum = 0; this.count = 0; } Counter.prototype.add = function (array) { forEachAsync(array, function (val, n, arr, next) { this.sum += entry; ++this.count; next(); }, function () { // Done }, this); // ^---- Note }; var obj = new Counter(); obj.add([2, 5, 9]); obj.count // 3 obj.sum // 16Since the
thisArgparameter (this) is provided toforEachAsync(), it is passed to callback each time it's invoked, for use as itsthisvalue.