diff --git a/src/async.js b/src/async.js index 61dc206..cfedefd 100644 --- a/src/async.js +++ b/src/async.js @@ -1,6 +1,7 @@ function Async() { return { bind: bind, + parallel: parallel, run: run, sequence: sequence, wait: wait, @@ -15,6 +16,26 @@ function Async() { } } + function parallel() { + var threads = arguments; + var pending = threads.length; + var results = []; + return function(f) { + var useResult = function(i) { + return function(x) { + results[i] = x; + pending--; + if(pending < 1) { + f(results); + } + }; + }; + for(var i = 0; i < threads.length; i++) { + threads[i](useResult(i)); + } + }; + } + function run() { var m; if(arguments.length == 1) {