Observer.error没有发送错误

时间:2018-06-05 14:32:16

标签: rxjs

我正在尝试在请求服务和订阅它的角度组件之间生成中间服务。为此,我从httpClient请求生成一个observable,它与中间服务连接,并发送HTTP响应。

当响应到达中间服务时,我生成另一个与客户端组件连接的observable。 问题从这里开始。当我从请求获得500状态响应时,我在中间服务中得到响应,但是当我尝试使用subscribe.error(err)发送到客户端组件时,它会启动一个永不停止的循环,以下错误:

  

您提供了一个无效的对象,其中包含一个流。您可以提供Observable,Promise,Array或Iterable。

我在请求服务和中间服务中使用相同的observer.error(err),它只在请求中正常工作。

Request: 
Observable.create((observer: Observer<any>) => 
this.httpClient
        .request(httpRequest)
        .subscribe(
...
(res: HttpErrorResponse) => {
            observer.error(res);
            observer.complete();
          },
          () => {
            observer.complete();
          },
}
Intermediate Service:
Observable.create((observer: Observer<any>) => 
this.requestService.request(requestServiceOptions).subscribe(
...
    (err: HttpErrorResponse) => {
            if (err.status === 401) {
              this.callbackWhenRequestFails();
            } else {
              observer.error(err);
              observer.complete();
            }
    }

1 个答案:

答案 0 :(得分:0)

已经解决了。 不幸的是,当捕获错误时我使用的是return而不是throw,那么这就是控制台显示流错误的原因!