2016-09-23 3 views
0

Пусть у меня есть компонент, который нуждается в два наблюдаемых, чтобы сделать его содержание:Угловые 2 - Действуя на два BehaviorSubject/наблюдаемых характеристики

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

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

Как правильно Угловым/rxjs способ вызова f() раз a прибывает, и/или вызвать его снова, как только b (например, обновление по параметрам маршрутизации).

Очевидно, что я мог отслеживать a и b вручную, но это выглядит уродливым и не изящным. Есть ли более угловатый способ?

ответ

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).

При подписке на объединенный наблюдаемый, obs1 будет подписан первым, а затем obs2.

Смежные вопросы