我将Grunt构建任务转换为Gulp实现。我使用gulp-watch
,这就是我炮制运行我的任务:结束正在进行的Gulp流的正确方法是什么?
gulp.task('task', function(){
return watch('glob/**/*', function(){
var stream = doTask();
return stream;
})
});
问题是,如果许多文件被更改,运行任务的次数太多。我需要找到一种方法来消除输入,并取消任何在新更改进入时已启动的任务。
如何取消Node.JS/Gulp流?我一直无法找到关于此的良好文档。我目前正试图.end()
,但我没有保证Gulp任务(SASS,Autoprefixer和CleanCSS)会尊重这一点。
我很熟悉debounce,并且正在考虑它。我不确定它是否可以在gulp-watch上工作,因为它通常在寻找一个由函数返回的流,我不知道它将如何处理一个虚假的值。我会试一试,谢谢。 –
你的处理程序不带参数,只是触发一个函数。反弹将延迟触发这一行动。它应该工作。如果您在尝试之后添加评论并告诉我们它是否正常工作,我会很高兴。 – Meir
看着这个,基于时间的去抖动不会解决我的问题(除非我可以取消已经开始的流正在进行。) 该任务大约需要10秒才能完成,这意味着文件更改可以开始新的任务不止一次,而它已经在工作。我真的不想一次开始超过一个这样的任务。 我要么停止已经启动的流(然后我可以使用基于时间的去抖动),或者,我需要一个防止事件启动直到任务已完成之后的去抖动。 –