Я использую jQuery и знаю, что эта проблема связана с тем, что реализация jQuery.Deferred не совместима с Promises/A+. Я не хочу использовать какие-либо другие библиотеки для решения этой проблемы.
Учитывая это, есть ли способ восстановиться после обратного вызова $.Deferred().fail()
, чтобы я вернулся обратно в цепочку успеха? Это возможно с формой многократного обратного вызова then()
, но пока я не нашел решения с использованием .fail()
тогда:
asyncThatWillFail().then(function () {
// useless callback
}, function () {
console.log("error");
return $.Deferred().resolve();
}).then(function () {
console.log("continuing on success chain");
});
сбой (не работает):
asyncThatWillFail().fail(function () {
console.log("error");
return $.Deferred().resolve();
}).then(function () {
console.log("continuing on success chain");
});
В моем случае мне нужно только проверить наличие ошибки, установить флаг и продолжить то, что я делал. Мне просто не нужен параллельный обработчик успеха в примере «затем».
Вот jsFiddle, чтобы уточнить, что я имею в виду.