我正在进行多 AJAX 调用,如下所示。下面的代码工作正常,如果所有的调用成功。但是,假设urlId 3和4由于某种原因失败了。是否可以在fail函数中获取 * 所有 * 失败的urlId?
var urlId = [1, 3, 4, 7]
let requests = [];
for (let i = 0; i < urlId.length; i++) {
requests.push($.ajax(...));
}
$.when.apply($, requests).done(function () {
$.each(arguments, function (idx, args) {
//process args : urlId[idx]
});
}).fail(function (jqXHR) {
//how to get urlId's failed
});
1条答案
按热度按时间gstyhher1#
您将无法可靠地获取
.fail
处理程序中的所有失败ID,因为只要任何一个延迟被拒绝,它就会立即触发,而不管其他延迟的状态如何。如果你想跟踪哪些请求成功了,哪些失败了,我认为你最好的选择是给每个
$.ajax
调用附加一个catch
处理程序,它将捕获一个失败,并将它Map到一个引用id
和成功/失败状态的对象。以这种方式捕获错误将意味着所有的延迟都将成功,因此成功和失败状态的处理将需要在附加到$.when
的done
处理程序中执行。例如:Here是供参考的小提琴。