2012-02-13 9 views

答えて

149

async.waterfallは、各関数がその結果を次の関数に渡すことを可能にし、async.seriesはすべての結果を最終コールバックに渡します。より高いレベルでは、async.waterfallは、データパイプライン(「与えられた2、3を掛け、2を加算し、17で割る」)であり、async.seriesは、順番に実行されなければならないが、 。

+0

したいアクションを扱っているが、それは、これら2つの関数のいずれかが値を返すことは可能ですか?私はそれが可能であることを読んだが、ドキュメンテーションのどこでも関連情報を見つけることができない。 –

+1

@AndersonGreen:いいえ。ライブラリのソースを見ると、 'waterfall'も' series'も値を返しません。結果が何であれ、オプションのコールバックパラメータで使用されることが期待されます。 – Twisol

+0

上記の答えは2012年に戻っても正しいかもしれませんが、正しいものは次のものと同じです:series()は、すべての結果がFinalコールバックに渡されるという名前で、waterfallは最後に渡された結果です最終的なコールバックに転送します。 [Mozilla Developer](https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/Displaying_data) – Jeb50

44

両方の関数は、すべての関数の戻り値を次の関数に渡します。そして、完了すると、エラーが発生した場合にエラーを渡してメインのコールバックを呼び出します。

違いはasync.series()です。シリーズが終了すると、すべての結果がメインコールバックに渡されます。 async.waterfall()は、呼び出された最後の関数の結果だけをメインコールバックに渡します。

+0

これは答えです;-) –

+0

@Mario "どちらの関数もコールバックを渡しますOR "両方の関数が前の関数の結果を渡す"? – user1451111

+0

@ user1451111、結果、笑...私は初めてそれを書いたと確信しています... – Mario

17

async.waterfall()は、action that relies on the previous outcomeを扱っています。

async.series()see all the result at the end

+1

恐ろしく作成された画像。自分で作成したのですか、それとも別の場所に持ってきましたか? – user1451111

+0

イメージありがとうございます。シンプルでクリアです。いいぞ。 –

+0

ありがとう!!!!今私はついに理解する:) –