2016-08-07 3 views
1

私は応答として毎回200を返すサーバーを持っています。エラーの応答を確認する必要がありますresponse.data.errorエラーが見つかった場合、アプリケーションコードのcatchメソッドにhttpリクエストを送信する必要があります。ここで

が..私は起こるしたいものの一例である

インターセプタコード

// interceptor code 
{ 
    response:function(response){ 
    if (response.data.error) { 
     return $q.reject(response) 
    }else{ 
     return response 
    } 
    }, 
    responseError:function(rejection){ 
    // error handling logic 

    return $q.reject(rejection) 
    } 
} 

アプリコード

// application code 
$http.get('/api/stuff') 
    .then(function(){ 
    // do success stuff 
    }).catch(function(){ 
    // the function i want to run!!! 
    }) 
+0

'$ http.get( 'aaa')'のようにランダム** url **を入力するとどうなりますか?それは 'キャッチ'を呼びますか? – developer033

+0

投稿されたコードは期待通りに動作するはずです。このアプローチに問題がある場合は、[MCVE](http://stackoverflow.com/help/mcve)にfiddle/plunkを入力してください。 – estus

+0

それは私のアプリケーションで何かになるよ。私はちょうどplunkrを作ったので、それは働いたhttps://plnkr.co/edit/ZpwSMW66EnUtP78QhVV9?p=preview –

答えて

1

これは愚かな間違いだった。ここに私が間違っていたものがあります。
ダムiのように、応答の内部ではなく関数の内部で返されました。だから、私がやったことは、フラグを作成し、そのフラグが真であれば、応答関数に直接戻ります。

インターセプタコード

// interceptor code 
{ 
    response:function(response){ 
    myCustomErrorFunction(){ 
     if (response.data.error) { 
     return $q.reject(response) 
     }else{ 
     return response 
     } 
    } 
    }, 
    responseError:function(rejection){ 
    // error handling logic 

    return $q.reject(rejection) 
    } 
} 

アプリのコードヘルプみんなのため

// application code 
$http.get('/api/stuff') 
    .then(function(){ 
    // do success stuff 
    }).catch(function(){ 
    // the function i want to run!!! 
    }) 

感謝。

0

ことでエラーをキャッチしてみてください。

$http.get('/api/stuff') 
    .then(function(data){ 
    console.log(data); // do success stuff 
    }, function(error){ 
     console.log(error); // will catch your error I hope 
    } 

私はtとは思わない帽子.catchがお返事されますので、.thenブロックの小切手を事前に作成する必要があります。

関連する問題