javascript - 自定义 HttpInterceptor - 如何返回无法解析的 Observable?

标签 javascript angular typescript rxjs

我正在关注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/

相关文章:

javascript - 如何在 Canvas 上绘制线条 JS 动画

angular - 如何绑定(bind)到 angular2 中投影内容中的属性?

css - 如何在元素上应用以下样式?

jquery - 使用 Moment.js 获取当年的第一天

typescript - TypeScript 能理解 Svelte 组件吗?

仅当启用 Ivy 时,Angular 9 升级才会导致 matPrefix 和 mat-form-field 出现样式问题

javascript - 拆分字符串,大括号除外

javascript - 将两个 div 居中,一个带有 Logo ,一个带有文本,并排放置在 html5 视频的顶部并且仍然可以响应?

javascript - 对于嵌套超过两个的 HTML 元素,Vue.compile 失败

angular - 异常 : Template parse errors: Only void and foreign elements can be self closed "meta"