как выдать ошибку после повторной попытки rx js 6 - PullRequest
1 голос
/ 26 мая 2020
• 1000 быть пойманным ErrorHandler:
private handleError(error, req: HttpRequest<any>, next: HttpHandler): Observable<any> {

  if (error.status === 0) {
    return next.handle(req).pipe(
      retryWhen(errors => errors.pipe(delay(1000), take(10), concatMap(throwError(errors)))));

  }
}

Если я удалю concatMap, он работает, но с этим я не могу заставить его работать. Как я могу это решить?

1 Ответ

1 голос
/ 26 мая 2020

Вы можете добавить локальную переменную для подсчета количества повторных попыток или использовать обычную retry.

private handleError(error, req: HttpRequest<any>, next: HttpHandler): Observable<any> {

  if (error.status === 0) {
    return next.handle(req).pipe(
      // delay 1sec in case of an error.
      catchError(e => timer(1000).pipe(switchMapTo(throw(e)))),
      retry(10),
      // after 10 times - okay failed.
    ),
  }
}
...