2017-03-31 5 views
0

私は反応的なプログラミングと観測可能なものの周りを頭で覆そうとしています。RxJS。 2つのプロパティからObservableを作成する

次のシナリオを解決するにはどのような対応方法がありますか?

私は2つのプロパティを持つオブジェクトを持っています。

いつでも、これらのプロパティの1つ、両方、またはどちらも設定できません。

これらの各プロパティは、私が聞くことができるイベントをディスパッチします。

両方のプロパティが設定されている場合のみ、更新イベントを監視し、そのプロパティで何らかの種類の集約を実行したいと考えています。

+0

私は、上記のプロパティとイベントのコード例を質問に追加して、回答時に必要となる仮定の数を減らすべきだと思います。 – cartant

答えて

0

可能な解決策の1つは、各プロパティからストリームを作成し、次にcombineLatestを使用してストリームを結合することです。

combineLatestは、両方の入力が値を生成するまで値を生成しません。両方の入力が値を生成した後、いずれかの値が変更されるたびにストリームが更新されます。以下のコードを参照してください:

const property1$ = Rx.Observable.fromEvent(button1, 'click'); 
const property2$ = Rx.Observable.fromEvent(button2, 'click'); 

const aggregateWhenBothAreClicked$ = property1$ 
    .combineLatest(property2$) 
    .map([property1,property2])=>doStuff(property1,property2)) 

両方のボタンがクリックされるまでdoStuff関数が呼び出されることはありません。両方のボタンがクリックされると、以後毎回doStuff関数が呼び出されます。

関連する問題