Я знаю, как цепочка 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 в качестве второго параметра.
