使用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();
});
有一个更好的方法吗?