重试 rxjs 6 后如何抛出错误

how to throw an error after retrying rxjs 6

我在重试语句中遇到 return 错误:

我想做的是重试httpRequest 10次才认为是错误的,如果失败10次,则抛出错误让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 它可以工作,但是有了这个,我就无法让它工作了。我该如何解决?

您可以添加一个局部变量来计算重试次数,或者您可以使用普通的 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.
    ),
  }
}