diff options
Diffstat (limited to 'lib/reduce.js')
-rw-r--r-- | lib/reduce.js | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/reduce.js b/lib/reduce.js index 1a6c036..571bc5a 100644 --- a/lib/reduce.js +++ b/lib/reduce.js @@ -1,7 +1,7 @@ import eachOfSeries from './eachOfSeries'; -import noop from './internal/noop'; import once from './internal/once'; import wrapAsync from './internal/wrapAsync'; +import awaitify from './internal/awaitify' /** * Reduces `coll` into a single value using an async `iteratee` to return each @@ -32,6 +32,7 @@ import wrapAsync from './internal/wrapAsync'; * @param {Function} [callback] - A callback which is called after all the * `iteratee` functions have finished. Result is the reduced value. Invoked with * (err, result). + * @returns {Promise} a promise, if no callback is passed * @example * * async.reduce([1,2,3], 0, function(memo, item, callback) { @@ -43,13 +44,15 @@ import wrapAsync from './internal/wrapAsync'; * // result is now equal to the last value of memo, which is 6 * }); */ -export default function reduce(coll, memo, iteratee, callback) { - callback = once(callback || noop); +function reduce(coll, memo, iteratee, callback) { + callback = once(callback); var _iteratee = wrapAsync(iteratee); - eachOfSeries(coll, (x, i, iterCb) => { + return eachOfSeries(coll, (x, i, iterCb) => { _iteratee(memo, x, (err, v) => { memo = v; iterCb(err); }); }, err => callback(err, memo)); } +export default awaitify(reduce, 4) + |