想請教大家 RxJS 如何將設定延遲、最大重試次數和例外處理合併在一起
ex: 每隔一秒重試一次,最多重試五次,若還是出現例外則交給例外處理
下面是測試 code
this.http.get<Object[]>(this.url).pipe(
tap({
next: val => console.log("123"),
error: error => console.error(error + " , " + new Date().toTimeString())
}),
retryWhen(errors => errors.pipe(delay(1000), take(5))),
catchError(this.handleError)
);
private handleError(err: HttpErrorResponse) {
if (error.error instanceof ErrorEvent) {
// A client-side or network error occurred. Handle it accordingly.
console.error('An error occurred:', error.error.message);
} else {
// The backend returned an unsuccessful response code.
console.error(
`Backend returned code ${error.status}, ` +
`body was: ${error.error}`);
}
// return an observable with a user-facing error message
return throwError(
'Something bad happened; please try again later.');
}
上面的 code 會印出 6 次 “123”,5 次錯誤發生時間,但是不會執行 handleError
不知道要如何讓它可以在最後執行到 handleError
?