我正在尝试在请求服务和订阅它的角度组件之间生成中间服务。为此,我从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();
}
}
答案 0 :(得分:0)
已经解决了。 不幸的是,当捕获错误时我使用的是return而不是throw,那么这就是控制台显示流错误的原因!