reduce-async v0.1.6
ReduceAsync 
Asynchronous Array.reduce. The reduce() method applies a function against an accumulator and each value of the array (from left-to-right) to reduce it to a single value.
Installation
$ npm install reduce-asyncSyntax
reduceAsync(array, iteratee, done[, initialValue])Parameters
arrayArray - The array to reduce.iterateeFunction - The function to execute on each value in the array, taking five arguments:prevAny - The value previously returned in the last invocation of the iteratee, orinitialValueif supplied.currAny - The current element being processed in the array.nInteger - The index of the current element being processed in the array. Start at index 0, if aninitialValueis provided, and at index 1 otherwise.arrArray - The arrayreduceAsyncwas 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 reduce has finished, taking one argument:resultAny - The value that results from the reduction.
initialValueAny (Optional) - Value to use as the first argument to the first call of theiteratee.
More information on how reduce works.
Examples
Asynchronously sum all the values of an array.
reduceAsync([0, 1, 2, 3], (prev, curr, n, arr, next) => { doSomethingAsync(() => { next(prev + curr); }); }, result => { // result == 6 }));Asynchronously flatten an array of arrays,
reduceAsync([[0, 1], [2, 3], [4, 5]], (prev, curr, n, arr, next) => { doSomethingAsync(() => { next(prev.concat(curr)); }); }, result => { // result is [0, 1, 2, 3, 4, 5] }));Asynchronously concatenate all words within an array together starting from an initial value of
"foo".reduceAsync(['bar', 'baz']], (prev, curr, n, arr, next) => { doSomethingAsync(() => { next(prev + curr); }); }, result => { // result is "foobarbaz" }, 'foo'));