在将对象传递给另一个Observable之前,是否可以从Subject更改发射值的属性?例如:
this.subscriptions.push(this.myService.mySubject.subscribe(value => {
value.property = true;
this.subscriptions.push(this.myOtherService.myMethod(value.propertyTwo).subscribe(value => {
// do things with value
});
}, (error) => {
// how can I still access said value in the error handler?
});
我将订阅推送到私人订阅数组,以便我可以在ngOnDestroy
中取消订阅。在这种情况下,我想摆脱嵌套订阅,并想知道是否可以这样做?
另外,我如何仍然可以访问订阅的错误处理程序中的value
变量?
由于
答案 0 :(得分:1)
使用switchMap
将它们链接起来,并使用catch
处理错误。在编写良好的可观察链中,通常不需要很多订阅
this.subscriptions.push(this.myService.mySubject.switchMap(value => {
value.property = true;
return this.myOtherService.myMethod(value.propertyTwo)})
.catch(e=>Observable.of(e)).subscribe())