你是如何做到的? RxJs對我來說仍然是個謎。RxJs - 在每次突發事件後重播所有事件
我嘗試這樣的東西:
filterChanges
.delay(400)
.replay()
.reduce(function(acc,x) { return acc.concat(x) }, [])
.subscribe(function(changes) {
console.log(changes);
...
或者
filterChanges.subscribe(function() {
filterChanges.aggregate(function(changes) {
...
我真的很丟在這裏。我想要的行爲是:某些用戶操作導致多個過濾器更改。我不想一次處理一個,但只有當更改突發完成後才能處理它們。但是當我處理它們時,我希望從流的開始處更改所有過濾器。
現在我寫了這篇文章,我意識到最好是在一陣變化之後獲得所有的濾波器,而不是所有的變化本身,所以我只需要趕上爆發的結束。我想回答這兩個問題,因爲我認爲這會幫助我更好地理解RxJs。
- 訂閱一連串事件的結尾。
- 訂閱一連串事件的結尾並捕獲流開頭的所有事件 。
聽起來像想要緩衝區和掃描的組合。 Buffer將給定時間段內發生的所有操作分組,並掃描以消耗此緩衝流,並維護一個累積所有觀測值的List。 – Chris
你能澄清你的意思是「過濾器更改」嗎? –
我的用例是:過濾器採用簡單的屬性/值形式:所以'狀態 - >德克薩斯州'過濾器意味着排除狀態爲德克薩斯州的所有記錄。我使用與日期過濾器相同的方案,因爲我的數據中存在少量不同的日期。因此,如果用戶將開始或結束日期更改爲包含,則可以一次設置或刪除多個不同日期的過濾器。每當過濾器發生變化時,我會遍歷所有記錄設置或取消設置.hidden標誌。但是,如果用戶取消設置某些過濾器(例如,展開日期範圍),我無法取消隱藏仍被其他過濾器隱藏的記錄。 – Sigfried