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

export default awaitify((eachfn, tasks, callback) => {
    var results = isArrayLike(tasks) ? [] : {};

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