我正在使用Restangular通过链式承诺获取数据。以下是我正在做的简化示例:
Restangular.one("employer").get().then(function(employer) {
return employer;
}, function(response) {
//response.status === '401'
$location(login);
}).then(function(company) {
Restangular.one("reviews?company_name='" + company).get()
.then(function(reviews) {
$scope.reviews = reviews.originalElement;
});
});
首先,我需要获得用户的雇主,然后再获得该雇主的评论。我认为它工作正常,直到我从服务器得到401响应。
当它发生时,我将用户发送到登录屏幕。这也很好,但问题是整个链被执行 - 这将再返回401.
最终我希望链条在发生错误时停止。我可以通过抛出错误来做到这一点,但这真的是一个很好的解决方案吗?我是以错误的方式接近这个吗?
答案 0 :(得分:3)
在错误处理程序中,您需要return false;
来停止承诺链:
Restangular.one("employer").get().then(function(employer) {
return employer;
}, function(response) {
//response.status === '401'
$location(login);
return false
}).then(function(company) {
Restangular.one("reviews?company_name='" + company).get()
.then(function(reviews) {
$scope.reviews = reviews.originalElement;
});
});