非同期処理を逐次処理するための JavaScript ライブラリを書きました。
Processor インタフェース
var processor = new Processor(); processor.add(p1).add(p2, p3); processor.execute();
上記の例では Processor に p1 〜 p3 の非同期処理 (Process) を add メソッドでキューイングして execute メソッドで実行しています。add メソッドに複数の Process を指定した場合、それらは並列で実行されます。並列処理の場合、全ての処理が完了した時点で次のキューに進みます。
Process インタフェース
var p1 = new Process(); p1.execute = function() { //do something p1.result.message = "Hello World"; //fire next queue this.done(); };
Process は execute と done というインタフェースを持ちます。非同期処理が完了した際に明示的に done を実行してください。また、Process は result というオブジェクトを持ちます。result はバケツのようなもので次の Process に参照が渡ります。最終的に Processor まで参照が渡ります。
Processor のキューに別の Processor を入れる
var subProcessor = new Processor(); subProcessor.add(pA).add(pB); var mainProcessor = new Processor(); mainProcessor.add(p1).add(p2, p3).add(subProcessor); mainProcessor.execute();
Processor は Process のサブクラスなので Processor のキューに別の Processor インスタンスを入れることもできます。