javascript - 自定义 HttpInterceptor - 如何返回一个永不解析的 Observable?
问题描述
我正在关注这篇关于如何通过自定义HttpInterceptor
类在我的 Angular 应用程序中实现全局错误处理的文章。
重要的部分是这个实现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()
which 让我返回一个 Observable 但我想用来Observable.never
返回一个永远不会解析的 observable 但它希望我返回一个类型Observable<HttpEvent<any>>
并且它不会让我将其NeverObservable
转换为该类型。
有没有办法获得我想要的功能?
解决方案
不要返回一个从不。返回一个空。它们会自动完成您想要的,因为在 ondestory 事件页面之前永远不会在内存中徘徊。循环中返回 500/503 的任何内容都会堆积起来。
if (err instanceof HttpErrorResponse) {
if (err.status === 503 || err.status ===500) {
// do handling. message or whatever
return Observable.empty();
}
}
推荐阅读
- linux - nginx 根据端口重新路由所有数据(nginx 代理)
- prometheus - 如何查询 Prometheus 中所有具有特定标签值的时间序列?
- powerbi - 更改客户状态
- javascript - 将数据从一个控制器传输到另一个控制器模式
- php - 从 php 读取 oracle 视图时:ORA-06502: PL/SQL: numeric or value error: character to number conversion error
- java - 如何在Android中加密pdf
- c# - 在 3 层应用程序中将 DTO 保存在磁盘上的逻辑放置在哪里?
- python - 一种对曲面顶部和底部切片进行排序的算法
- perl - 为什么我不能打印文本“$!”?
- anylogic - 如何从代码中刷新 AnyLogic ModelDatabase?