2016-01-16 82 views
0

我有一個Gulp任務,具有以下任務:獲取文件夾列表。計算文件夾中的單詞。報告每個文件夾的計數和總計數。Gulp:異步任務完成後運行代碼

到目前爲止,這就是我所擁有的。

gulp.task('count', function() { 

    ['folder1','folder2',...].forEach(function(folderName) { 
    gulp.src(['./'+folderName+'/**/*.md']).pipe(countWords(folderName)); 
    }); 

}); 

所有的文件夾的話後已經算,我要調用一個函數reportGrandTotal。我花了數小時試圖找出如何做到這一點。問題是gulp.src().pipe()鏈是異步運行的。在我試過的許多模式中,reportGrandTotal在任何gulp.src().pipe()鏈完成之前結束運行。

如何修改此任務,以便一旦所有的gulp.src().pipe()鏈完成後,我可以運行reportGrandTotal並獲得總計?

+0

使用[run-sequence](https://www.npmjs.com/package/run-sequence) –

+0

使用'run-sequence'不起作用。 Gulp開始聚合,完成任務,然後在完成聚合之前開始並完成總的任務 - 完成任務。 –

回答

0

如果我理解你的問題,你可以爲reportGrandTotal指定一個依賴關係,確保你的所有任務使用回調或返回一個流或承諾。

gulp.task('reportGrandTotal', ['count'], function(){ 
    // your code 
} 

第二個參數將成爲依賴關係,reportGrantTotal不應在依賴關係完成之前運行。 Gulp docs for dependencies

+0

不起作用。 Gulp開始聚合,完成任務,然後在完成聚合之前開始並完成總的任務 - 完成任務。 –