重试 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.
),
}
}
我在重试语句中遇到 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.
),
}
}