角度拦截器,错误时重试请求

时间:2019-01-10 08:22:19

标签: angular angular-http angular-httpclient angular-http-interceptors

我想让用户重试请求导致错误。我显示一个带有重试按钮的Toast,当用户单击重试时,请求将再次发送。

我遇到的问题是重试的请求总是被取消

@Injectable({ providedIn: 'root' })
export class ErrorInterceptor implements HttpInterceptor {

  constructor(private snackSrv: MatSnackBar) { }

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request).pipe(
      retryWhen(err => {
        const snackRef = this.snackSrv.open('Failed', 'retry');
        return snackRef.onAction();
      })
    );
  }
}

为什么取消?上面的代码中是否没有内存泄漏,订阅将一直有效,直到用户单击重试?

0 个答案:

没有答案