angularjs - $q promise 错误回调链

标签 angularjs angular-promise chain

在以下代码片段 error 1 中和 success 2将被记录。如果原始延迟被拒绝,我如何传播被调用的错误回调而不是成功回调被调用。

angular.module("Foo", []);
angular
.module("Foo")
.controller("Bar", function ($q) {
    var deferred = $q.defer();
      deferred.reject();

      deferred.promise
          .then(
              /*success*/function () { console.log("success 1"); },
              /*error*/function () { console.log("error 1"); })
          .then(
              /*success*/function () { console.log("success 2"); },
              /*error*/function () { console.log("error 2"); });
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="Foo">
    <div ng-controller="Bar"></div>
</div>

最佳答案

错误通过返回 $q.reject 传播在错误回调中

    var deferred = $q.defer();
      deferred.reject();

      deferred.promise
          .then(
              /*success*/function () { console.log("success 1"); },
              /*error*/function () { console.log("error 1"); return $q.reject('error 1')})
          .then(
              /*success*/function () { console.log("success 2"); },
              /*error*/function () { console.log("error 2"); });
});

关于angularjs - $q promise 错误回调链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26442199/

相关文章:

javascript - Angular.js - Javascript 依赖注入(inject)

javascript - 将匹配的字符串包装在 anchor 标记中

javascript - 是否可以从 AngularJS 中 $http.get 的成功方法返回一个值?

javascript - 链接 ajax jquery 调用的两种方法。正确对象,真爱?

angularjs - Angularjs 的事件记录或数据映射器模式?

javascript - 选择影响其填充对象的属性的多个元素

javascript - 选择下拉菜单和 promise - 短暂清空选择

angularjs - Angular-ui-route 使用 angularJS 工厂解析

django - python celery : How to append a task to an old chain

javascript - 是否可以在不向控制台发送错误消息的情况下停止链?