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

Kei*_*eir 2 javascript promise angularjs angular-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'); 
  });
Run Code Online (Sandbox Code Playgroud)

同样在Plunker

我希望记录"承诺拒绝",但我得到"承诺履行".我有什么想法可以实现我想要的行为?

Ben*_*aum 11

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

then功能的承诺有将忽略任何传递给它比其他的功能.所以当你有代码时:

myPromise.then(otherPromise)
Run Code Online (Sandbox Code Playgroud)

整个otherPromise部分完全被忽略了.这是因为Promises/A +没有指定一个catch方法,你需要能够.then(null, errHandler)处理错误而不改变promise值本身,如果它解决了.