我將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秒才能完成,這意味着文件更改可以開始新的任務不止一次,而它已經在工作。我真的不想一次開始超過一個這樣的任務。 我要麼停止已經啓動的流(然後我可以使用基於時間的去抖動),或者,我需要一個防止事件啓動直到任務已完成之後的去抖動。 –