2

次のシナリオで Dojo Deferred を機能させる方法について頭を悩ませています。基本的に、いくつかのアイテムをループし、各アイテムを個別に遅延処理する関数があります。各アイテムの処理は、完了時に Deferred を返す個別のメソッドで実行されます。ループを実行して各アイテムを処理し、完了時に成功または失敗を報告できるようにしたいと考えています。テストサンプルとしてこれまでに得たものは次のとおりです。

http://jsfiddle.net/Ayyoudy/mgv6Y/12/

私は何を間違っていますか?出力番号が順番に並んでいることを期待していますが、そうではありません。

また、アイテムの 1 つを処理中にエラーが発生したかどうかを検出し、エラーが発生した場合は残りを処理しないようにしたいと考えています。

ありがとう

4

1 に答える 1

2
  1. 出力番号は順番に並べる必要があると決心しました。http://jsfiddle.net/granjoy/mgv6Y/17/ コードにはいくつかの問題があります

    • ループ関数はクロージャーを使用して変数を保持する必要があります。
    • 返された検証を Deferred プロセス Deferred で使用する必要があります
  2. process() 関数がすぐに終了することを考えると、ログは「すべての処理が完了しました!」最初の出力になります。

編集:

質問から学びました。ありがとう、著者は別の良い解決策を提供します。http://jsfiddle.net/Ayyoudy/mgv6Y/14

于 2012-01-12T09:20:17.403 に答える