2016-09-23 71 views
0

假設我有這需要兩個觀測來呈現其內容的組成部分:角2 - 代理兩個BehaviorSubject /觀測量

this.manifest.subscribe((a) => { 
    f(a, b) 
}) 

this.route.params.subscribe((b) => { 
    f(a, b) 
}) 

什麼是調用適當的角/ rxjs方式f()一次a到達,和/或者再次呼叫b(例如,在路由參數上更新)到達。

很明顯,我可以手動跟蹤ab,但看起來很醜並且不夠優雅。有更多的Angularian方式嗎?

回答

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

0

如果您需要兩個觀測到解決一個接一個,你可能會考慮Observable.concat(obs1, obs2)

訂閱級聯的observable時,obs1將首先訂閱,然後obs2訂閱。