我知道如何链接promises以便执行多个成功函数。在许多例子中都提到了这一点。如何链接promises以便执行多个错误函数?
答案 0 :(得分:32)
当处理错误(并且返回值或根本没有值)时,从那时返回的承诺被视为已解决。您必须从每个错误处理程序返回被拒绝的承诺,以便传播和链接错误处理程序。
例如:
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();
});
答案 1 :(得分:0)
then
/ fail
函数返回一个promise,可以通过抛出错误来拒绝。如果你想链接多个错误处理程序并触发它们,你应该从前面的错误处理程序中抛出错误。
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
作为第二个参数传递。