我无法理解链接承诺的错误处理的基本概念.为了学习规则,我写了一个简单的例子,猜测结果是什么.但不幸的是,它不会像我一样表现.我已经阅读了很多关于这个主题的文章,但由于我的英语不好,我可能无法得到细节.
无论如何,这是我的代码:
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;
Run Code Online (Sandbox Code Playgroud)
嗯,我知道它可以更好地编码,但它只是为了这个目的.以下是Serviceforpromise1函数的代码:
function Serviceforpromise1()
{
...
return $http.get(*whatever*).then(function (data){
return data;
},function(error)
{
return $q.reject();
});
}
Run Code Online (Sandbox Code Playgroud)
仅考虑Serviceforpromise1失败的情况.一个$ q.rejec t被送回主链上,所以我在等待的"错误回调promise1.然后( "被称为和它的工作如预期,我决定为例子错误transfert到" promise2.然后 "所以在这个错误回调我添加了行返回$ q.reject() ;但它从未达到第二个错误回调(" promise2 .then "一个)我不明白为什么(像Serviceforpromise1,我返回了一个拒绝承诺!)
我很乐意深入了解这里发生的事情.谢谢你的帮助.