对于jQuery.when()
,如果一个请求失败,那么所有请求都会失败。
$.when(deferred1, deferred2).then(function() {
// Called only after both deferred are resolved
}, function() {
// Called immediately after one of the deferreds is rejected
});
你怎么能等待所有的东西执行,即使失败呢?我尝试使用.always()
而不是.then()
,但在第一次失败后也会立即调用回调。
一种(丑陋的)解决方案是使用标志来控制这两个操作何时完成,并在每个操作上使用.always()
(不使用$.when()
)。
var deferred1Complete = false;
var deferred2Complete = false;
function callback() {
if (deferred1Complete && deferred2Complete) {
// Execute after both deferred are either resolved or rejected
}
}
deferred1.always(function() {
deferred1Complete = true;
callback();
});
deferred2.always(function() {
deferred2Complete = true;
callback();
});
有没有更好的方法来做这件事?
https://stackoverflow.com/questions/15306401
复制相似问题