С 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();
});
Есть лучший способ сделать это?