0

.when 呼び出しと並行して実行している jQuery ajax リクエストがいくつかあります。タイムアウト期間が経過しても返されなかったものは無視したいと思います。

簡単な形式を次に示します。

var ajax1 = $.ajax({url: url1,
    timeout: 1000,
    success: function() {
        console.log("1 done");
    }
});

var ajax2 = $.ajax({url: url2,
    timeout: 1000,
    success: function() {
        console.log("2 done");
    }
});

$.when(ajax1, ajax2).done(function() {
    console.log("all done");
});

上記の例では、url1 が 1 秒以内に応答しない場合でも、「すべて完了」に到達したいと考えています。各 ajax 呼び出しでタイムアウト エラーをトラップする方法は知っていますが、エラーを無視するようにフラグを立てる方法はわかりません。

4

1 に答える 1

4

ajax呼び出しが成功した方法だけでなく、すべての方法(成功、エラー、タイムアウトなど)が必要な場合は、.always()代わりに使用できませんか?.done()

$.when(ajax1, ajax2).always(function() {
    console.log("all done");
});

コールバックに渡された引数を.always()使用して、ajax 呼び出しの成功またはエラーの種類を判断できます。

于 2013-04-15T20:30:55.443 に答える