2016-01-16 51 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开始聚合,完成任务,然后在完成聚合之前开始并完成总的任务 - 完成任务。 –