2017-05-05 6 views
0

나는 http 인터셉터를 각도로 만들고 있는데 인터셉터에서 오류를 던지고 싶습니다. 문서 당으로

:

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.

나는 내가를 처리 할 경우 상태 (200) 응답이 (내가 거기에 조건을했습니다) responseError로 라우팅되도록 위의 인용문에 굵은 부분을 수행 할 오류.

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