使用 Bacon.js 去除唯一值
Debouncing unique values with Bacon.js
我有一个文件系统观察器生成一个 Bacon.js 已更改文件路径的事件流。我想过滤和去抖动这个流,以便每个唯一的文件路径只在 5 秒后没有 activity 的那个唯一值出现在输出流中。我基本上想编写以下伪代码:
var outputStream = inputStream.groupBy('.path',
function (groupedStream) { return groupedStream.debounce(5000); }
).merge();
我有一个复杂的解决方案,涉及为每个过滤的流创建一个单独的 Bacon.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); });
我有一个文件系统观察器生成一个 Bacon.js 已更改文件路径的事件流。我想过滤和去抖动这个流,以便每个唯一的文件路径只在 5 秒后没有 activity 的那个唯一值出现在输出流中。我基本上想编写以下伪代码:
var outputStream = inputStream.groupBy('.path',
function (groupedStream) { return groupedStream.debounce(5000); }
).merge();
我有一个复杂的解决方案,涉及为每个过滤的流创建一个单独的 Bacon.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); });