angular - 将数据从一个可观察对象传递到另一个对象的正确方法
问题描述
解决方案
如果getTablesNamesObservable
和getOperatorMetadata
是独立的,则使用更有意义combineLatest
:
Observable.combineLatest(
this.getTablesNamesObservable(),
this.metadataService.getOperatorMetadata()
).map(([tableNames, metadata]) => this.modifyMetadata(metadata, tableNames));
modifyMetadata
每当任一 observable 发出值时都会调用then 。
通过使用switchMap
,您可以取消订阅并重新订阅getOperatorMetadata
由getTablesNamesObservable
发出的可观察对象返回的可观察对象。如果它们是独立的——也就是说,getOperatorMetadata
不需要传递表名——做似乎没有必要。
如果每个 observables 只发出一个值 - 或者如果你只想要每个的最后一个发出的值 - 使用forkJoin
而不是combineLatest
.
推荐阅读
- javascript - 多个 HTML 元素的相同交叉点观察者
- c++ - 处理 constexpr 函数中的致命错误(或断言)
- email - 2 个 SMTP 服务器如何相互验证?
- java - 如何在cpanel上运行一个简单的java程序
- javascript - div 触发流项目动画
- google-sheets - Google 表格:Importrange 函数
- solr - Apache SOLR 中的条件删除
- jenkins - 詹金斯:stash vs archiveArtifacts
- solr - 无法在 SOLR Highlight 中返回有限的文本
- sml - 在 SML 中使用记录作为函数参数