吞咽任务是否必须返回任何东西?

在显示使用吞吐的在线示例中,一些任务返回stream,而另一些则不返回stream。

例如,没有回报:

gulp.task('tsc', function() { gulp.src('**/*.ts') // ... }); 

和相同的代码,返回:

 gulp.task('tsc', function() { return gulp.src('**/*.ts') // ... }); 

是否有必要返回stream?

如果你没有返回一个stream,那么每个任务的asynchronous结果将不会被其调用者等待,也不会被任何相关任务所等待。

例如,当不返回stream时:

 $ gulp scripts [21:25:05] Using gulpfile ~/my-project/gulpfile.js [21:25:05] Starting 'tsc'... [21:25:05] Finished 'tsc' after 13 ms [21:25:05] Starting 'scripts'... [21:25:05] Finished 'scripts' after 10 ms [21:25:05] Compiling TypeScript files using tsc version 1.0.1.0 

请注意, scripts任务取决于tsc任务。 据报道, tsc在13毫秒内完成,这绝对是太快,不能合理地相信。 然后scripts任务似乎在非常短的时间内开始并完成。 最后, tsc的实际操作开始。 很明显, tscscripts都没有等待编译步骤完成。

当这些任务返回它们的stream时,输出看起来相当不同:

 $ gulp scripts [21:42:25] Using gulpfile ~/my-project/gulpfile.js [21:42:25] Starting 'tsc'... [21:42:25] Compiling TypeScript files using tsc version 1.0.1.0 [21:42:32] Finished 'tsc' after 6.65 s [21:42:32] Starting 'scripts'... [21:42:32] Finished 'scripts' after 204 ms 

这里的顺序是有意义的,报告的持续时间符合预期。