【发布时间】:2020-01-26 16:10:13
【问题描述】:
我有一个非常简单的拦截器,可以拦截错误并在控制台打印输出:
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
catchError((error: HttpErrorResponse) => {
if (error.status == 401) {
console.log("Error 401", error);
}
else if (error.status == 404) {
console.log("Error 404", error);
}
else if (error.status == 0) {
console.log("Unknown error", error);
sendRequestAgain();
} else{
// do nothing
}
return throwError(error)
})
);
}
问题是当我得到error.status==0时,它第一次完美运行并再次发送请求(使用sendRequestAgain()),但是当第二次请求失败时,错误被正确拦截但控制不进入else if (error.status == 0) { 块。相反,它会下降到 else 块。我已经打印出错误,两次都完全相同。甚至else if (error.status == 0) { 上的断点也没有被第二次击中,这很奇怪。
有什么想法吗?
【问题讨论】:
-
catchError操作符应该返回一个 Observable。尝试返回一些东西,看看你的错误是否仍然存在。 -
感谢您的提示。让我试试看。
-
更新了问题。我现在返回一个 observable
-
还是一样的行为
-
console.log(error.status)仍会显示 0?
标签: angular error-handling angular-http-interceptors