Angular - Catching error after all HTTP retry failed

后端 未结 4 2037
走了就别回头了
走了就别回头了 2021-01-07 10:06

I am using Angular Service to get data from my API. I implemented retry feature in case of fetching data fails. Now i need to handle the error when all the retr

4条回答
  •  耶瑟儿~
    2021-01-07 10:51

    please try to change this:

    }).pipe(
      retryWhen(errors => errors.pipe(delay(1000), take(10), catchError(this.handleError)))
    );
    

    to this: This might need a tweak for your own code but this approach works for me, the throwError will be catched as errors

    }).pipe(
      mergeMap(x => {
        if(x == error) return throwError('Error!'); //tweak this for your error
        else return of(x);
      }),
      retryWhen(errors => errors.pipe(delay(1000), take(10))), 
      catchError(error => this.handleError(error)) // change here 
    );
    

    and make handle error return observable like:

    handleError(err) {
      ..your code
      return of(err); //and NOT return throwError here
    }
    

提交回复
热议问题