summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorCaolan McMahon <caolan@caolanmcmahon.com>2010-05-17 17:08:28 +0100
committerCaolan McMahon <caolan@caolanmcmahon.com>2010-05-17 17:08:28 +0100
commitbf0dfd86bcd44ad086bb01ee15c210f2c508c596 (patch)
tree24d653d9ddf4f7c1274ac9b08f43a49210990302 /lib
parent1ea1153989b371b993c1121164948524181db2df (diff)
downloadasync-bf0dfd86bcd44ad086bb01ee15c210f2c508c596.tar.gz
added parallel and series methods
Diffstat (limited to 'lib')
-rw-r--r--lib/async.js30
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)();
+};