如何使用Restangular停止错误链接请求?

时间:2013-11-04 20:27:03

标签: javascript angularjs restangular

我正在使用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.

最终我希望链条在发生错误时停止。我可以通过抛出错误来做到这一点,但这真的是一个很好的解决方案吗?我是以错误的方式接近这个吗?

1 个答案:

答案 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;
    });
});