2015-08-21 54 views
2

我有一個文件系統觀察器,它產生了一個更改文件路徑的Bacon.js事件流。我想過濾和消除此流,以便每個唯一文件路徑只在輸出流中出現5秒後沒有針對該唯一值的任何活動。我基本上想寫以下僞代碼:用Bacon.js去掉唯一值

var outputStream = inputStream.groupBy('.path', 
    function (groupedStream) { return groupedStream.debounce(5000); } 
).merge(); 

我有涉及創建每個過濾流分開Bacon.Bus,每個我遇到一個新的唯一值時創建一個新的總線一個複雜的解決方案。這些都被去抖,並插入輸出總線。有沒有更好的辦法?我會更好地切換到RxJS並使用它的groupBy函數嗎?

回答

2

原來Bacon.js最近添加了一個groupBy函數!搜索表明它不存在,我被誤導了。因此,這對我的作品:

var outputStream = inputStream.groupBy(function (item) { return item.path; }) 
    .flatMap(function (groupedStream) { return groupedStream.debounce(5000); }); 

編輯:這裏是一個基於OlliM的評論的簡化版本(kiitos!):

var outputStream = inputStream.groupBy('.path') 
    .flatMap(function (groupedStream) { return groupedStream.debounce(5000); }); 
+1

你可以用'GROUPBY( 「路徑」)',而不是你的函數的,請參閱培根文檔中的[函數構造規則](https://github.com/baconjs/bacon.js#function-construction-rules)。 – OlliM