javascript - 使用 $q,努力让拒绝在 AngularJS 中级联

标签 javascript angularjs promise angular-promise

我有一系列 promise ,依赖于另一个完成并希望将它们“然后”在一起以获得代表整个序列完成的单个 promise 。这似乎工作正常但是我似乎无法在 promise 链中级联任何失败,因为它们似乎应该从文档中做,这里有一个代码示例来说明我正在努力解决的问题:

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

  var resolvedPromise = deferred.promise;
  var rejectedPromise = $q.reject('rejected');

  var aPromise = resolvedPromise.then(rejectedPromise);

  aPromise.then(function () {
    console.log('promise fulfilled');
  }, function () { 
    console.log('promise rejected'); 
  });

The same in Plunker

我希望记录“promise rejected”,但我却得到“promise fulfilled”。有什么想法可以实现我想要的行为吗?

最佳答案

JBNizet 的回答很好,但我认为有些事情需要澄清。

then 函数 promise 将忽略除函数以外的任何传递给它的东西。所以当你有代码时:

myPromise.then(otherPromise)

整个 otherPromise 部分被完全忽略。这样做的理由是,由于 Promises/A+ 没有指定 catch 方法,您需要能够执行 .then(null, errHandler) 来处理错误而不更改 promise 如果它解决了,它自己就会有值(value)。

关于javascript - 使用 $q,努力让拒绝在 AngularJS 中级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27777402/

相关文章:

node.js - 从 KOA 中间件内部的 Promise 调用 Yield

javascript - Promise 响应参数丢失

javascript - 我如何在 vue js 中使用内联声明的变量?

Jquery Datepicker日期格式问题

Angularjs 的 promise

javascript - AngularJS ng :submit on 'enter' key

javascript - Angular 过滤器 "Error: [ngModel:nonassign] Expression ' (gridData.StructureViewModel | sumPlanByKpi :kpi )' is non-assignable."

node.js - Node 流捕获 Promise 的错误?

javascript - 我如何创建一个 Javascript/Jquery 算法函数,它将在加载时进行计算——并在 mousedrag 期间重新绘制?

javascript - 无法在 Eclipse IDE 中将 php 变量传递给 javascript