非同期処理を逐次処理するための JavaScript ライブラリを書きました

非同期処理を逐次処理するための 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 インスタンスを入れることもできます。