我在某些可以触发的组件中具有请求,例如通过单击:
performRequest() {
const request = this.http
.get('https://randomfox.ca/floof/')
.subscribe();
request.unsubscribe();
}
我有http拦截器:
@Injectable()
export class MyInterceptor implements HttpInterceptor {
public intercept(req: HttpRequest<any>, next: HttpHandler) {
return next.handle(req); // all is ok
return next.handle(req).pipe(catchError(e => throwError(e))); // request can't be cancelled now
}
}
如果第一个return
工作正常-请求被unsubscribe()
取消,但是第二个却没有取消(我说的是在请求级别取消,就像请求没有待处理而是被取消一样)。
为什么会这样?如何处理拦截器中的错误并能够取消请求?
答案 0 :(得分:0)
我找到了一些解决方法,因此可能会有所帮助-
return next.handle(req).pipe(tap(noop, (err: any) => /* handle somehow*/));
还要说,我已经在单独的(和+-干净的)有角项目中进行了尝试,并且未重现问题