我有一个文件系统监视程序,它生成更改文件路径的Bacon.js事件流。我想过滤并反跳此流,以使每个唯一文件路径仅在该唯一值无活动5秒后出现在输出流中。我本质上想编写以下伪代码:
var outputStream = inputStream.groupBy('.path',
function (groupedStream) { return groupedStream.debounce(5000); }
).merge();
我有一个复杂的解决方案,其中涉及为每个过滤后的流创建一个单独的Bacon.Bus,并在每次遇到新的唯一值时创建一个新的Bus。它们分别被去抖动并插入输出总线。有没有更好的办法?我最好改用RxJS并使用其groupBy函数吗?
最佳答案
事实证明,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); });