summaryrefslogtreecommitdiff
path: root/lib/internal/parallel.js
blob: 1b91b608e4c40f41ae55fdf01cfc483bc54f189a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import noop from 'lodash/noop';
import isArrayLike from 'lodash/isArrayLike';
import rest from 'lodash/_baseRest';

export default function _parallel(eachfn, tasks, callback) {
    callback = callback || noop;
    var results = isArrayLike(tasks) ? [] : {};

    eachfn(tasks, function (task, key, callback) {
        task(rest(function (err, args) {
            if (args.length <= 1) {
                args = args[0];
            }
            results[key] = args;
            callback(err);
        }));
    }, function (err) {
        callback(err, results);
    });
}