在下面的代码中,我尝试拦截我的http请求。每当我可以建立一个http连接时,我的拦截器都可以工作,但当我得到net::ERR_CONNECTION_REFUSED
时,event
变量不是HttpResponse
的实例,所以我无法处理这种错误。这是我的代码:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.changeStatus(false);
this.requests_count++;
const my_req = req.clone({
url: API_PATH + req.url
});
return next
.handle(my_req)
.do(event => {
if (event instanceof HttpResponse) {
this.requests_count--;
if (!this.requests_count)
this.changeStatus(true);
}
});
}
如何检测拦截器错误,如net::ERR_CONNECTION_REFUSED
?
答案 0 :(得分:1)
刚拿到它!
.do(
event => {
if (event instanceof HttpResponse) {
this.requests_count--;
if (!this.requests_count)
this.changeStatus(true);
}
},
error => {
if (error instanceof HttpErrorResponse) {
this.requests_count--;
if (!this.requests_count)
this.changeStatus(true);
}
}
);