例如:
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的职位,更新一个特定的工具
我应该是使用某种类型的地图,我不会订阅这两个领域的?
我如何重构这个代码?
重构你的代码可以使用
mergeMap
switchMap
你的问题是一个完美的使用情况switchMap
。 因为你刚才提到this.ds.onSave$
是被点击了不同成分的保存按钮时触发的主题。
优点switchMap
让你在这种情况下是将取消所有旧订阅(HTTP通话中你的情况),如果自动按钮被点击多次。
ModifiedCode
this.saveSubscription$ = this.ds.onSave$.pipe(switchMap(()=>
this.sb.updateMachineTool(this.viewEditModel.viewEditModel)
)
).subscribe(x = {
console.log('alert results', x)
});
了解更多
-
Understanding mergeMap and switchMap in RxJS
-
The Simple Difference Between RxJS switchMap and mergeMap