diff options
| author | Caolan McMahon <caolan@caolanmcmahon.com> | 2010-05-17 17:08:28 +0100 |
|---|---|---|
| committer | Caolan McMahon <caolan@caolanmcmahon.com> | 2010-05-17 17:08:28 +0100 |
| commit | bf0dfd86bcd44ad086bb01ee15c210f2c508c596 (patch) | |
| tree | 24d653d9ddf4f7c1274ac9b08f43a49210990302 /lib | |
| parent | 1ea1153989b371b993c1121164948524181db2df (diff) | |
| download | async-bf0dfd86bcd44ad086bb01ee15c210f2c508c596.tar.gz | |
added parallel and series methods
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/async.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/async.js b/lib/async.js index 3634bf2..faac869 100644 --- a/lib/async.js +++ b/lib/async.js @@ -63,3 +63,33 @@ exports.waterfall = function(arr){ }; makeCallback(0)(); }; + +exports.parallel = function(arr, callback){ + var results = []; + arr.forEach(function(fn){ + fn(function(){ + var args = Array.prototype.slice.call(arguments); + results.push((args.length > 1) ? args: args[0]); + if(results.length == arr.length){ + callback(results); + } + }); + }); +}; + +exports.series = function(arr, callback){ + var results = []; + var makeCallback = function(index){ + return function(){ + if(index > 0){ + var args = Array.prototype.slice.call(arguments); + results.push((args.length > 1) ? args: args[0]); + } + if(index < arr.length){ + arr[index](makeCallback(index+1)); + } + else callback(results); + } + }; + makeCallback(0)(); +}; |
