如何在 angularjs 中链接 promise 错误函数

How to chain promise error functions in angularjs

我知道如何链接承诺以便执行多个成功函数。这在许多例子中都有说明。我如何链接承诺以便执行多个错误函数?

then/fail函数returns一个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 方法并将 errorHandler1errorHandler2 作为第二个参数传递。

处理错误时(并且,值被 returned 或根本没有值),承诺 return 从那时起 被认为已解决。您必须 return 来自每个错误处理程序的拒绝承诺,以便传播和链接错误处理程序。

例如:

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();
   });