スポンサーリンク

JQuery の when の fail は待ってくれない

JQuery を使ってて、複数の非同期通信( $.ajax() )が全て終わってから処理をしたい場合がありまして、$.ajax() の戻り値を配列に突っ込んで、$.when で処理しようとしたのですが・・・。

全て成功の場合はそれで良かったのですが、どれか一つでも非同期通信が失敗すると、そこで when の fail が走っちゃうみたいなんですよね。

今回は成功でも失敗でも、とにかく全ての処理の終了を待ちたかったので、これではちょっと困ります。

というわけで調べてみたら、$.Deferred() を使うとできそうなのでやってみました

ソースコードは以下のような感じになります。

$.Deferred() とはなんぞや? というところに関しては、理解が及んでいないのでパスさせていただくとして、とりあえず resolve() をセットすれば結果が成功に倒れます。

ちなみに失敗をセットする時は reject() を使います。

あとキモになるのは、判定用の配列に詰め込むのが Deferred オブジェクトの promise() メソッドの戻り値というところでしょうか。

これでOK!

スポンサーリンク
コメント
Verify your Comment
Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

コメントを投稿
おすすめの記事と広告

プロフィール


  • 書いてる人:夢界 陸

    名古屋在住のおっさん。
    プログラミングやガジェットの話など、 日々の興味を徒然と綴っています。



    Twitterやってます @mukairiku

    運営サイト
    www.mukairiku.net

ブログ内検索

Licenses

  • Creative Commons License

OTHER

  • このブログのはてなブックマーク数

Blog powered by TypePad

スポンサーリンク