corrade-nucleus-nucleons – Blame information for rev 36

Subversion Repositories:
Rev:
Rev Author Line No. Line
36 office 1 module.exports = function parallel(fns, context, callback) {
2 if (!callback) {
3 if (typeof context === 'function') {
4 callback = context
5 context = null
6 } else {
7 callback = noop
8 }
9 }
10  
11 var pending = fns && fns.length
12 if (!pending) return callback(null, []);
13  
14 var finished = false
15 var results = new Array(pending)
16  
17 fns.forEach(context ? function (fn, i) {
18 fn.call(context, maybeDone(i))
19 } : function (fn, i) {
20 fn(maybeDone(i))
21 })
22  
23 function maybeDone(i) {
24 return function (err, result) {
25 if (finished) return;
26  
27 if (err) {
28 callback(err, results)
29 finished = true
30 return
31 }
32  
33 results[i] = result
34  
35 if (!--pending) callback(null, results);
36 }
37 }
38 }
39  
40 function noop() {}