【发布时间】:2015-05-24 09:20:28
【问题描述】:
我无法理解使用链式 Promise 处理错误的基本概念。 为了学习规则,我写了一个简单的例子,猜猜结果会是什么。但不幸的是,它并没有像我那样表现。 我已阅读有关该主题的多篇文章,但由于我的英语语言不佳,我可能无法获得详细信息。
无论如何,这是我的代码:
var promiseStart = $q.when("start");
var promise1 = promiseStart.then(function() {
return Serviceforpromise1.get();
});
var promise2 = promise1.then(function(data1)
{
return Serviceforpromise2.get(data1);
},function(error)
{
return $q.reject();
});
var promiseend = promise2.then(function(data2)
{
return data2;
},function(error)
{
return error;
});
return promiseend;
好吧,我知道它可以更好地编码,但这只是为了达到目的。 这是Serviceforpromise1函数的代码:
function Serviceforpromise1()
{
...
return $http.get(*whatever*).then(function (data){
return data;
},function(error)
{
return $q.reject();
});
}
仅考虑 Serviceforpromise1 失败的情况。 $q.reject 被发送回主链,所以我正在等待“promise1 .then(”的错误回调被调用并且它按预期工作。我决定为示例将错误转移到“promise2 .then”,所以在这个错误回调中我添加了 return $q.reject(); 但它从未到达第二个错误回调(“promise2 .then”),我不明白为什么(就像 Serviceforpromise1,我返回了一个被拒绝的承诺!)
我很乐意深入了解这里发生的事情。 感谢您的帮助。
【问题讨论】:
-
你如何检查
promise2的错误回调没有被调用?我没有看到任何可以告诉你它是否被调用的东西。 -
是的,我登录到控制台,但删除了帖子的日志记录代码,以免打扰不相关的行
标签: javascript angularjs promise chaining