Rxjs Observer.error未发送错误
我试图在请求服务和订阅它的角度组件之间生成一个中间服务。为了实现这一点,我从httpClient请求生成一个可观察的连接到中间服务的请求,并发送HTTP响应 当响应到达中间服务时,我生成另一个与客户机组件连接的可观察对象。 问题从这里开始。当我从请求中获得Rxjs Observer.error未发送错误,rxjs,Rxjs,我试图在请求服务和订阅它的角度组件之间生成一个中间服务。为了实现这一点,我从httpClient请求生成一个可观察的连接到中间服务的请求,并发送HTTP响应 当响应到达中间服务时,我生成另一个与客户机组件连接的可观察对象。 问题从这里开始。当我从请求中获得500状态响应时,我会在中间服务中得到该响应,但当我尝试使用subscribe.error(err)发送到客户机组件时,它会启动一个永不结束的循环,出现以下错误: 您提供了一个无效的对象,其中需要流。您可以提供一个可观察的、承诺的、数组的或可观
500
状态响应时,我会在中间服务中得到该响应,但当我尝试使用subscribe.error(err)
发送到客户机组件时,它会启动一个永不结束的循环,出现以下错误:
您提供了一个无效的对象,其中需要流。您可以提供一个可观察的、承诺的、数组的或可观察的
我在请求服务和中间服务中使用相同的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();
}
}
请求:
可观察。创建((观察者:观察者)=>
这个是.httpClient
.request(httpRequest)
.订阅(
...
(res:HttpErrorResponse)=>{
观测误差(res);
observer.complete();
},
() => {
observer.complete();
},
}
中间服务:
可观察。创建((观察者:观察者)=>
this.requestService.request(requestServiceOptions).subscribe(
...
(错误:HttpErrorResponse)=>{
如果(错误状态===401){
此.callbackwhenRequestFailes();
}否则{
观察者错误(err);
observer.complete();
}
}
它已被解决。
不幸的是,当捕获错误时,我使用的是return而不是throw,这就是为什么控制台显示流错误