HTTP 요청에서 Observable을 구성하여 오류가 발생하면 다시 시도합니다. 그러나 이 아닌 경우 서버가 429 Too many requests
오류로 응답하면을 다시 시도하고 싶습니다.각도 2 RxJS Observable : 429 상태를 제외하고 다시 시도하십시오.
현재 구현은 상관없이 1 초 간격으로 두 번 다시 시도합니다.
return this.http.get(url,options)
.retryWhen(errors => {
return errors.delay(1000).take(2);
})
.catch((res)=>this.handleError(res));
errors
은 관측 가능합니다. 오류를 일으킨 기본 Response
개체를 어떻게 얻을 수 있습니까? 그것으로 나는 서버의 상태 코드에 액세스 만이 아닌 429의 경우 재 시도 할 수 있습니다 :
return this.http.get(url,options)
.retryWhen(errors => {
if($code == 429) throw errors;
else return errors.delay(1000).take(2);
})
.catch((res)=>this.handleError(res));
가 어떻게 retryWhen
내에서 상태 코드를받을 수 있나요? 당신은 그 errors
관찰에 429 오류의 처리를 구성 할 수 Typescript 2.0.2
서버에서받은 오류로 인해 오류가 발생하면 오류 인스턴스에 'status' 및'statusText' 속성이 있어야합니다. – cartant
@cartant 예.하지만이 인스턴스에 대해 어떻게 알 수 있습니까? 'retryWhen'을 제거하면, 인스턴스는'ResponseEnter' 클래스의 객체처럼 위의 handleError()에 전달됩니다. 하지만 'retryWhen' 논리 중에 어떻게 읽는지 모르겠습니다. OP에서 언급했듯이, 그 함수가받는 (위에서'errors'라고 불리는) 것은 Observable이지,'status'와'statusText' 속성을 가진'Response'는 아닙니다. – BeetleJuice
'status'와'statusText' 속성을 포함하도록 (서버 오류의 결과로) 관찰 가능한 오류의 모든 오류 인스턴스를 기대합니다. 저는'retryWhen' 연산자에 익숙하지 않습니다 - 그러므로 주석 -하지만 오류 자체로부터'status'를 얻을 수 있어야합니다. – cartant