4

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

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

4

1 回答 1

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;
    });
});
于 2013-11-13T10:24:51.537 回答