Async Flow
Async Flow provides control flow for asynchronous methods.
Async Flow は非同期メソッドの制御フローを提供します。
Support
- Node.js v0.8 +
- Chrome
- Safari
- Firefox
- Opera
- IE9 +
Example
npm install async-flow
var flow = ; // initialize timer function { return { ; };} // 非同期フロー 1var flow1 = flow ; // 非同期フロー 2var flow2 = flow ; // 1, 2 から作られた 非同期フロー 3var flow3 = flow ; // 3 から作られた 非同期フロー 4var flow4 = flow ; // 3 から作られた 非同期フロー 5var flow5 = flow ; // 4, 5 から作られた 非同期フローflow ;
API Documentation
Flow Class
Flow.create([Flow1, Flow2, ...])
new 演算子を使わないためのインターフェース
新しい Flow を生成するための method
Flow Class の instance が返される。
引数に Flow Class の instance を可変長個渡すと、全ての Flow が完了すると流れ出す新しい Flow を生成する。
new Flow(Array)
new 演算子を使って instance を生成する。
Flow.create との違いは引数を配列で渡す点のみ。
#flow(Function callback) -> Flow
制御フローを流すための method
引数に 1 つの関数を渡す。
callback(next, skip[, arg1, arg2, ...])
callback では、非同期/同期 に関わらず、必ず next 又は skip method を 1 度呼び出す必要がある。
next([arg1, arg2, ...]) -> void
次の関数を呼び出す。
値を返さないこと以外は元の関数と全く同じ挙動をするため Function#call や Function#apply を使って context を指定して呼び出すことも可能。
返り値は Flow#results で取得することができる。
2 度以上呼び出した場合の挙動は保証されない。
skip(Number index[, arg1, arg2, ...]) -> void
指定した index 後の関数を呼び出す。
index に 0 を指定すると next と全く同じ挙動をする。
index に 1 を指定すると 1 つ飛ばして次の関数を呼び出すことになる。
2 度以上呼び出した場合の挙動は保証されない。
arg1, arg2, ...
前の関数で next 又は skip に与えた引数が同じ順番で渡される。
flow.create
した直後では、 create の引数に指定された Flow の最後の関数で指定された引数が連結された状態で渡される。
Array results
callback を呼び出した時の返り値が呼び出した順に格納される property
flow.create
した場合、元の Flow のresults
は引き継がない。