首页 > 解决方案 > Observer.error 没有发送错误

问题描述

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

当响应到达中间服务时,我生成另一个与客户端组件连接的 observable。问题从这里开始。当我500从请求中获得状态响应时,我在中间服务中获得了该响应,但是当我尝试使用 a 发送到客户端组件时,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();
            }
    }

标签: rxjs

解决方案


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


推荐阅读