gpt4 book ai didi

javascript - .then AngularJS promise 链中的拒绝

转载 作者:行者123 更新时间:2023-12-03 11:38:49 25 4
gpt4 key购买 nike

因此,根据文档(和实践经验;))AngularJS 的 $q “then” 方法返回新的 Promise( https://docs.angularjs.org/api/ng/service/ $q “The Promise API” 部分)。

考虑这样的代码:

// method somewhere in MyService service
// ...
loadItem = function() {
return OtherService.load().then(function(item) {
item.preprocessed = true;
return item;
});
}
// end of loadItem method

// Somewhere along the controller:
MyService.loadItem().then(function(item) {
// do something with an item...
alert(item.preprocessed);
}, function(error) {
alert('Error!');
})

现在,我想对 Promise 返回值进行一些处理,但同时我希望将拒绝推送到 Promise 链,而不必在每一步都手动拒绝 Promise。在上面的示例中,如果项目加载正常,则 preprocessed 属性设置为 true,并且 Controller 上的正确处理程序 then() 方法被触发,但是当出现问题并且 OtherService.load() 的结果时被拒绝, Controller 代码中的拒绝处理程序将不会被触发。

有没有办法克服这个问题,也许有一种语法可以允许拒绝通过?

最佳答案

由于您要在错误回调中返回作为调用 then 的一部分返回的 promise ,请执行

 return OtherService.load().then(function(item) {
item.preprocessed = true;
return item;
},
function(error) {
return $q.reject(error);
});

并且错误回调将在 Controller 上触发。

关于javascript - .then AngularJS promise 链中的拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26361124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com