質問

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

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

何が間違っているのですか?出力番号は順番に並んでいると思いますが、そうではありません。

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

ありがとう

役に立ちましたか?

解決

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

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

      編集:

      私はその質問から学びました。おかげで、著者は別の良い解決策を提供します。 http://jsfiddle.net/Ayyoudy/mgv6Y/14

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top