我有一個角度服務,我想暴露一個observable,它充當邏輯「或」的類。假設我有多個源序列可以給出on
和off
的值。我需要輸出true
任何時候任何東西都是on
,並且當所有值爲off
時返回false
。rxjs中是否有邏輯或類型的運算符?
例子:
const replaceInput = input => input === 'on' ? 'off' : 'on';
const getSource = (name) => Observable.interval(1000)
.scan(
input => Math.random() > 0.5 ? replaceInput(input) : input,
'off' // initial value
)
.do(val => console.log(`${name}: ${val});
const first$ = getSource('first');
const second$ = getSource('second');
const result$ = ???;
現在,我已經試過result$ = Observable.merge(first$, second$)
,但給人總是on
。我也嘗試過使用result$ = combineLatest(first$, second$)
,所以這有點不錯,但是我的輸入不同步,所以並不總是完美的。我的意思是,第一美元可能放出一個以上的價值,而第二美元可能永遠不會開火,反之亦然。我還可以做些什麼?
我想過一些mergeMap或類似的,然後保持外部上下文的狀態,這種方式我運行任何事件的更新。但是當我遇到問題時,「關閉」事件可能意味着「關閉」,但是隻有其他序列也是「關閉」的時候,所以它很快就會變得棘手。
您可以使用篩選器操作,放出只有當值匹配根據您的要求, –
那麼,什麼將是什麼樣子? – Zlatko
在你的代碼中看起來對我來說,一旦輸入'打開',沒有邏輯將其設置爲關閉 –