【发布时间】:2019-06-04 15:27:11
【问题描述】:
我的问题是关于我最近一直在摸索的事情——
在我的拦截器中,我有解析和处理某些错误的代码,并且会根据错误的状态代码等以某些方式采取行动(我没有包含此代码,因为它对这个问题没有任何用途,但如果有人有充分的理由说明我为什么应该包含它,我绝对可以。
我想弄清楚如何在我的拦截器中处理net :: ERR_TIMED_OUT(使用谷歌浏览器/歌剧)。我已经将其追踪到可以告诉正在构建请求并正在“处理”的地步,但是在那之后,请求和响应都消失了。我最初的想法是某处存在XMLHttpRequest 错误,并且它以某种方式被抑制并且响应被抛出。
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const intercepted = this.setHeaders(req);
return this.SetPendingRequests(next.handle(intercepted))
.pipe(catchError((err): Observable<HttpEvent<any>> => {
return this.ParseErrorResponse(err);
}));
}
我也尝试将finalize(() => {}) 添加到其中,并且在除此之外的所有情况下都可以正常工作,ERR_TIMED_OUT 基本上似乎决定所有事情都必须停止。
我也尝试过直接连接到XMLHttpRequest,而 angular 并没有太客气 - 因为我觉得问题的根源可能源于它本身。
所有 google/stackoverflow 搜索几乎都指向这是一个本地问题,但我觉得在我的代码中应该有一些方法来处理它,所以如果用户在使用我的应用程序时遇到这个错误,我能够妥善处理。基本上,我只想要对ERR_TIMED_OUT 的任何请求(奇怪的是,其他浏览器基本错误返回“未知错误”类型的错误——这是我发现的唯一一个奇怪的异常值,它只是简单地停止了一切。我是看看是否有其他人遇到过这个问题/愿意帮助我解决这个问题。
感谢您对此事的任何帮助,并提前致谢,
【问题讨论】:
标签: angular http xmlhttprequest timeout interceptor