2017-03-31 33 views
0

我試圖圍繞反應式編程和可觀察到的我的頭。RxJS。從2個屬性創建一個Observable

什麼是解決以下情況的被動方式?

我有一個2屬性的對象。

在任何時候,這些屬性中的一個,兩個或兩個都不能設置。

這些屬性中的每一個都可以解開我可以聽到的事件。

只有當這兩個屬性設置我想聽他們的更新事件和運行某種聚合他們的屬性。

+0

我認爲應該在問題中添加所述屬性和事件的代碼示例,以減少回答時需要做出的假設數量。 – cartant

回答

0

一個可能的解決方案是從每個屬性創建一個流,然後使用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函數。

相關問題