【发布时间】:2018-04-11 09:12:20
【问题描述】:
这里是代码示例:
let watcher;
const streamWatcher = bacon.fromBinder(sink => {
watcher = chokidar.watch(root, {
ignored: /(^|[\/\\])\../
});
watcher.on('all', (event, path) => {
sink({
event: event,
path: path
});
return () => {
watcher.unwatch(root);
};
});
});
streamWatcher
.skipDuplicates(_.isEqual)
.map('.path')
.scan([], (a, b) => {
a.push(b);
return a;
})
.debounce(300)
.onValue(files => {
if (files.length) {
console.log('change event fired');
tinyLrSrv.changed({
body: {
files: files
}
});
}
});
我想要做的是使用 chokidar 监视文件夹更改(正在开发的 Web 目录)然后使用 Bacon.js 进行包装和去抖动(因为我不想知道每个文件更改,只需告诉我一批)并返回更改的文件数组。
问题是 - 数组是从头开始的,所以每次文件更改时,它都会不断添加到原始数组中。
我想得到的是最后更改的文件数组,换句话说,每次onValue收到数组时,保存数组的变量都需要重置。
有没有一种纯粹的 bacon.js 方法可以做到这一点?
【问题讨论】:
标签: javascript node.js events frp bacon.js