首页 > 解决方案 > 将数据从一个可观察对象传递到另一个对象的正确方法

问题描述

标签: angularasynchronousrxjsobservable

解决方案


如果getTablesNamesObservablegetOperatorMetadata是独立的,则使用更有意义combineLatest

Observable.combineLatest(
  this.getTablesNamesObservable(),
  this.metadataService.getOperatorMetadata()
).map(([tableNames, metadata]) => this.modifyMetadata(metadata, tableNames));

modifyMetadata每当任一 observable 发出值时都会调用then 。

通过使用switchMap,您可以取消订阅并重新订阅getOperatorMetadatagetTablesNamesObservable发出的可观察对象返回的可观察对象。如果它们是独立的——也就是说,getOperatorMetadata不需要传递表名——做似乎没有必要。

如果每个 observables 只发出一个值 - 或者如果你只想要每个的最后一个发出的值 - 使用forkJoin而不是combineLatest.


推荐阅读