我想让用户重试请求导致错误。我显示一个带有重试按钮的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();
})
);
}
}
为什么取消?上面的代码中是否没有内存泄漏,订阅将一直有效,直到用户单击重试?