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;エラー ハンドラで、promise チェーンを停止する必要があります。

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 に答える