在jQuery.when期间忽略超时

时间:2013-04-15 20:27:47

标签: javascript jquery jquery-deferred

我有一些jQuery ajax请求,我与.when调用并行运行。我想忽略那些在超时后没有返回的那些。

这是一个简单的形式:

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调用中捕获超时错误,但我不知道如何将错误标记为忽略。

1 个答案:

答案 0 :(得分:4)

如果你想要ajax调用完成的所有方式(成功,错误,超时等等)而不仅仅是成功的方式,你不能只使用.always()而不是.done()饰面:

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

传递给.always()回调的参数可用于确定ajax调用的成功或错误类型。