1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| var noop = require('./noop');
| var each = require('./each');
| var nextTick = require('./nextTick');
| exports = function(tasks, cb) {
| cb = cb || noop;
| var results = [];
| var pending = tasks.length;
| if (!pending) return done(null);
| each(tasks, function(task, i) {
| task(function(err, result) {
| taskCb(i, err, result);
| });
| });
| function taskCb(i, err, result) {
| results[i] = result;
| if (--pending === 0 || err) done(err);
| }
| function done(err) {
| nextTick(function() {
| cb(err, results);
| cb = noop;
| });
| }
| };
|
| module.exports = exports;
|
|