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

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

    eachfn(tasks, (task, key, callback) => {
        wrapAsync(task)((err, ...result) => {
            if (result.length < 2) {
                result = result[0];
            }
            results[key] = result;
            callback(err);
        });
    }, err => callback(err, results));
}