Angular 如何在重试rxjs 6后抛出错误

Angular 如何在重试rxjs 6后抛出错误,angular,rxjs,rxjs6,Angular,Rxjs,Rxjs6,我在重试语句中遇到返回错误问题: 我想做的是在认为错误之前重试和httpRequest 10次,如果失败10次,则抛出错误以被ErrorHandler捕获: private handleError(error, req: HttpRequest<any>, next: HttpHandler): Observable<any> { if (error.status === 0) { return next.handle(req).pipe( re

我在重试语句中遇到返回错误问题:

我想做的是在认为错误之前重试和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)))));

  }
}
private handleError(错误,请求:HttpRequest,下一步:HttpHandler):可观察{
如果(error.status==0){
返回next.handle(req.pipe)(
retryWhen(errors=>errors.pipe(延迟(1000)、take(10)、concatMap(抛出器(errors ')));
}
}

如果我移除concatMap,它会工作,但是有了它,我无法使它工作。如何解决此问题?

您可以添加一个局部变量来计算重试次数,也可以使用普通的
重试

private handleError(错误,请求:HttpRequest,下一步:HttpHandler):可观察{
如果(error.status==0){
返回next.handle(req.pipe)(
//发生错误时延迟1秒。
catchError(e=>timer(1000).pipe(switchMapTo(throw(e))),
重试(10),
//10次后-OK失败。
),
}
}

如何计算重试次数???我不能,我想让这个计时器依赖于重试索引,它将是
catchError
中的计时器(1000+索引*100),您可以执行
index++
let index=0
应在handleError范围内定义。