summaryrefslogtreecommitdiff
path: root/lib/groupByLimit.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/groupByLimit.js')
-rw-r--r--lib/groupByLimit.js9
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);