2

いくつかの(順序付けられていない)ajax呼び出しが終了した後にイベントをトリガーするための最良のアプローチはどれかと思います。

少し明確にするために、いくつかのajax呼び出しをトリガーするメソッドdoSomethingGreat()を呼び出したいと思います。これらの呼び出しが成功する順序は、不要です。これらの呼び出しがすべて成功したときに、イベント「SomethingGreatFinished」をトリガーしたいだけです。また、これらの呼び出しを連鎖させたくありません。パフォーマンスが不足し、非同期プログラミングの考え方に完全に反するからです。

a。)そのための一般的なパターンがあるかどうか、b。)これはJavaScript用のReactive Extensions(RxJs)またはc。)ネイティブjquery機能を使用して実行できるかどうか疑問に思います。

どんな助けでも大歓迎です!

4

3 に答える 3

3

RxJSを使用すると、ForkJoin演算子を使用してこれを行うことができます。この演算子は、値を持つN個のオブザーバブルを取得し、N個すべてのオブザーバブルが完了すると配列で起動する1つのオブザーバブルを作成します。

この演算子については、Matthew Podwysockiのブログ投稿を参照してください:http://codebetter.com/blogs/matthew.podwysocki/archive/2010/04/23/introduction-to-the-reactive-extensions-for-javascript-going-parallel-with -forkjoin.aspx

于 2010-07-21T23:53:06.160 に答える
1

.ajaxStop()を確認する必要があります。

ただし、これcallbackは、完了するすべてのajaxリクエストで発生します。したがって、最後のリクエストがいつ完了したかを知るには、 .ajaxStart()global variableも呼び出すか、起動するリクエストごとにを繰り返す必要がありdecrementます.ajaxStop()。その変数がに達するzeroと、すべてのリクエストが完了します。

于 2010-07-21T07:21:30.483 に答える
0

行われている呼び出しの数がわかっている場合は、その数に変数を設定し、AJAX完了イベントが発生するたびにそれをデクリメントします。変数がゼロに達すると、「SomethingGreat」が発生しました。

于 2010-07-21T07:16:08.403 に答える