2017-05-05 12 views
0

私はhttpインターセプタを角度で作っていますが、response$httpProviderインターセプタからスローエラーを作りたいと思います。

ドキュメントを1として:私は、ステータス200との応答は(私はそこに条件をした)私が処理するresponseErrorにルーティングされるように、上記の引用の太字の部分をやりたい

response : interceptors get called with http response object. The function is free to modify the response object or create a new one. The function needs to return the response object directly, or as a promise containing the response or a new response object.

responseError : interceptor gets called when a previous interceptor threw an error or resolved with a rejection.

エラー。 が応答を返さないと、次のエラーがスローされます。

Cannot read property 'data' of undefined 

私はレスポンスを返すが、次のハンドラすなわちresponseErrorにそれを渡したいしたくありません。

どうすればいいですか? 私はそれを明確にしたいと思う。おかげさまで

アップデート(以下コード):

app.config(['$httpProvider', function($httpProvider) { 
    interceptor.$inject = ['$q', '$rootScope']; 
    $httpProvider.interceptors.push(interceptor); 

    function interceptor($q, $rootScope) { 
     return { 
      response: response, 
      responseError: responseError 
     }; 

     function response(response) { 
      if (response.data.rs == "F") { 
       // I want to route it responseError --> 
      } else { 
       return response; 
      } 
     } 

     function responseError(response) { 
      // I want to handle that error here 
     } 
    } 

}]); 
+0

コードメイトを表示 – Satpal

+0

@Satpal pls check – pranavjindal999

答えて

1

用途:

また
return $q.reject(response); 

必ず返します(それhereについての記事を読む)

return response || $q.when(response);

の代わりに:

return response; 
+0

私はこの 'return $ q.reject(response);'を試しましたが、コントロールは 'responseError'には行きません。:/ – pranavjindal999

関連する問題