例如:
this.saveSubscription$ = this.ds.onSave$.subscribe(x =>
this.sb.updateMachineTool(this.viewEditModel.viewEditModel).subscribe(x = {
console.log('alert results', x)
})
)
this.ds.onSave$
是单击其他组件上的保存按钮时触发的主题。
this.sb.updateMachineTool
是httpClient帖子,用于更新特定工具
我应该使用某种类型的地图,以便不同时订阅这两个区域吗?
如何重构此代码?
答案 0 :(得分:1)
您的问题是switchMap
的完美用例。因为您已经提到this.ds.onSave$
是一个主题,当单击另一个组件上的保存按钮时会触发。
在这种情况下,switchMap
给您带来的好处是,如果反复单击该按钮,它将自动取消所有旧的订阅(在您的情况下为Http Call in Progress)。
ModifiedCode
this.saveSubscription$ = this.ds.onSave$.pipe(switchMap(()=>
this.sb.updateMachineTool(this.viewEditModel.viewEditModel)
)
).subscribe(x = {
console.log('alert results', x)
});
了解更多