我正在关注this article关于如何通过自定义在我的 Angular 应用程序中实现全局错误处理 HttpInterceptor
类。
重要的部分是 intercept()
的实现:
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).do((event: HttpEvent<any>) => {}, (err: any) => {
if (err instanceof HttpErrorResponse) {
// do error handling here
}
});
}
我不知道该怎么做,如果我在这里发现错误,我怎样才能得到 intercept()
函数返回一个永远不会解析的 Observable?
我尝试更改 next.handle.do()
至next.handle.catch()
这让我返回一个 Observable,但我想使用 Observable.never
返回一个永远不会解析的可观察值,但它期望我返回 Observable<HttpEvent<any>>
类型它不会让我转换 NeverObservable
到那种类型。
有办法获得我想要的功能吗?
最佳答案
不要返回“never”。返回一个空的。它们会自动完成您想要的内容,因为永远不会在内存中停留,直到页面发生 ondestory 事件。循环中任何返回 500/503 的内容都会堆积起来。
if (err instanceof HttpErrorResponse) {
if (err.status === 503 || err.status ===500) {
// do handling. message or whatever
return Observable.empty();
}
}
关于javascript - 自定义 HttpInterceptor - 如何返回无法解析的 Observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53013598/