吞咽任务是否必须返回任何东西?
在显示使用吞吐的在线示例中,一些任务返回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
的实际操作开始。 很明显, tsc
和scripts
都没有等待编译步骤完成。
当这些任务返回它们的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
这里的顺序是有意义的,报告的持续时间符合预期。