diff options
Diffstat (limited to 'lib/groupByLimit.js')
-rw-r--r-- | lib/groupByLimit.js | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/groupByLimit.js b/lib/groupByLimit.js index f0402aa..5663637 100644 --- a/lib/groupByLimit.js +++ b/lib/groupByLimit.js @@ -1,6 +1,8 @@ import noop from './internal/noop'; import mapLimit from './mapLimit'; import wrapAsync from './internal/wrapAsync'; +import awaitify from './internal/awaitify' + /** * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. * @@ -19,11 +21,12 @@ import wrapAsync from './internal/wrapAsync'; * @param {Function} [callback] - A callback which is called when all `iteratee` * functions have finished, or an error occurs. Result is an `Object` whoses * properties are arrays of values which returned the corresponding key. + * @returns {Promise} a promise, if no callback is passed */ -export default function(coll, limit, iteratee, callback) { +function groupByLimit(coll, limit, iteratee, callback) { callback = callback || noop; var _iteratee = wrapAsync(iteratee); - mapLimit(coll, limit, (val, iterCb) => { + return mapLimit(coll, limit, (val, iterCb) => { _iteratee(val, (err, key) => { if (err) return iterCb(err); return iterCb(null, {key, val}); @@ -49,3 +52,5 @@ export default function(coll, limit, iteratee, callback) { return callback(err, result); }); } + +export default awaitify(groupByLimit, 4); |