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 回答