我有一系列 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');
});
我希望记录“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/