假设我有一个需要两个observable来呈现其内容的组件:
this.manifest.subscribe((a) => {
f(a, b)
})
this.route.params.subscribe((b) => {
f(a, b)
})
一旦f()
到达时调用a
的正确Angular / rxjs方式是什么,和/或在b
(例如,路由参数更新)到达后再次调用它。
显然,我可以手动跟踪a
和b
,但这看起来很丑陋而且不优雅。有更多的Angularian方式吗?
答案 0 :(得分:3)
您可以使用combineLatest
合并两个流,并在每次触发其中一个时触发。
Rx.Observable.combineLatest(this.manifest, this.route.params, (a, b) => f(a, b))
.subscribe(c => /*Do something with the result of f(a,b)*/
请注意,上述内容仅在每个来源至少有一个值时触发,但如果您的来源为BehaviorSubjects
答案 1 :(得分:0)
如果您需要两个可观察对象一个接一个地解决,您可能需要考虑Observable.concat(obs1, obs2)
。
订阅连接的observable时,obs1
将首先订阅,然后obs2
订阅。