用Bacon.js宣布独特的价值观

时间:2015-08-21 19:36:41

标签: javascript rxjs frp bacon.js

我有一个文件系统观察程序,用于生成已更改文件路径的Bacon.js事件流。我想对此流进行过滤和去抖动,以便每个唯一文件路径仅在该唯一值没有活动5秒后才会出现在输出流中。我基本上想写下面的伪代码:

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

我有一个复杂的解决方案,包括为每个过滤的流创建一个单独的Bacon.Bus,并在每次遇到新的唯一值时创建一个新的总线。这些都是去抖动并插入输出总线。有没有更好的办法?我最好切换到RxJS并使用它的groupBy函数吗?

1 个答案:

答案 0 :(得分: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); });