我想等待多个AJAX调用而不将回调嵌套在另一个内部。
从this文档中,我了解可以使用jQuery.when()
。
$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, a2){
/* a1 and a2 are arguments resolved for the
page1 and page2 ajax requests, respectively */
var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */
if ( /Whip It/.test(jqXHR.responseText) ) {
alert("First page has 'Whip It' somewhere.");
}
});
但是,从提供的示例中,我不明白如何处理错误。在正常的jquery.ajax
通话中,我在选项中提供了error
回调。
理想情况下,当至少有一个ajax调用导致错误时,我想要的是调用提供的错误回调。
答案 0 :(得分:0)
正确的做法是将then
链接到when
,而不是done
。
例如:
$.when(
$.ajax("/page1.php", {
error: function(jqXHR, textStatus, errorThrown){
// handle the error for this specific call
},
success: function(data, textStatus, jqXHR){
// handle the success for this specific call
}
}),
$.ajax("/page2.php"), {
error: function(jqXHR, textStatus, errorThrown){
// handle the error for this specific call
},
success: function(data, textStatus, jqXHR){
// handle the success for this specific call
}
}).then(
function(){
// all calls succeeded
},
function(){
// at least one of the calls failed
}
});