首页 > 解决方案 > 自定义 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转换为该类型。

有没有办法获得我想要的功能?

标签: javascriptangulartypescriptrxjs

解决方案


不要返回一个从不。返回一个空。它们会自动完成您想要的,因为在 ondestory 事件页面之前永远不会在内存中徘徊。循环中返回 500/503 的任何内容都会堆积起来。

if (err instanceof HttpErrorResponse) {
   if (err.status === 503 || err.status ===500) {
    // do handling. message or whatever
        return Observable.empty();
   }
}

推荐阅读