Я знаю, как цепочка promises, так что выполняются несколько функций успеха. Это объясняется многими примерами. Как сделать цепочку promises так, чтобы выполнялись несколько функций ошибки?
Как связать функции ошибки обещания в angularjs
Ответ 1
При обработке ошибки (и либо возвращаемое значение, либо вообще не имеет значения) обещание , возвращаемое с, считается разрешенным. Вы должны вернуть отклоненное обещание от каждого обработчика ошибок для распространения и блокировки обработчиков ошибок.
Например:
promseA.then(
function success() {
},
function error() {
return $q.reject();
})
.promiseB.then(
function success() {
},
function error() {
return $q.reject();
})
.promiseC.then(
function success() {
},
function error() {
return $q.reject();
});
Ответ 2
Функция then
/fail
возвращает обещание, которое может быть отклонено путем опрокидывания. Если вы хотите связать несколько обработчиков ошибок и вызвать их все, вы должны выбросить ошибку из предыдущих обработчиков ошибок.
var d = $q.defer();
d.promise.catch(errorHandler1).catch(errorHandler2);
d.reject();
function errorHandler1 {
throw new Error();
}
function errorHandler2() {
console.log("I am triggered");
}
Или вместо catch
вы можете использовать метод then
и передать errorHandler1
и errorHandler2
в качестве второго параметра.