处理ajax响应数组的正确方法是什么?我的意思是,因为它是一个承诺数组,当其中一个ajax调用失败时会发生什么?
$.when.apply($, array_of_promises).then(
successCallback function(){
// Loop over the arguments to control errors??
},
failCallback function(){
}
);
我在哪里可以检测到错误?我是否在'错误处理功能'中得到它?我是否必须检查循环参数变量的'success function'以检查是否已成功完成所有ajax调用?
答案 0 :(得分:1)
Deferred.then包含.done()
和.fail()
。所以我的猜测是你的第一个回调为success/.done()
,第二回调为error/.fail()
。
$.when.apply(array_of_promises).then(successCallback, failCallback);
successCallback function(){
...
}
failCallback function() {
...
}
Api - $.then()
答案 1 :(得分:1)
$.when.apply(array_of_promises)
请注意,此处缺少apply
的第一个参数,传递$
或null
。
当其中一个ajax调用失败时会发生什么?
如果将多个Deferred对象传递给jQuery.when, 该方法从新的“主”延迟对象返回Promise 它跟踪所有Deferred的聚合状态 通过。 该方法将尽快解决其主延期 延迟解决,或拒绝主人延期一个 延期被拒绝。如果主Deferred已解决,则为 传递了传递给的所有Deferred的已解析值 jQuery.when。例如,当Deferreds是jQuery.ajax()时 请求,参数将是请求的jqXHR对象 他们在参数列表中给出的顺序。
在多个Deferreds案例中,其中一个Deferreds被拒绝, jQuery.when立即为其master发出failCallbacks 递延。请注意,某些延迟可能仍未解决 那一点。如果您需要为此执行其他处理 如果取消任何未完成的ajax请求,你可以保留 对闭包中的底层jqXHR对象的引用 在failCallback中检查/取消它们。
我在哪里可以检测到错误?我是否在'错误处理功能'中得到它?
是
我是否必须检查循环参数变量的'success function'以检查是否已成功完成所有ajax调用?
没有。如果调用错误处理程序,则不会成功。只有在没有错误时才会调用成功函数。