假设有四个任务’a’,’b’,’c’,’d'(b取决于c和d; c和d都依赖于a),因此任务按以下顺序运行:
A-> (c,d) – > b
这是相应的gulpfile.js:
gulp.task('a'); gulp.task('c',['a']); gulp.task('d',['a']); gulp.task('b',['c','d']);
尽管任务’c’和’d’都依赖于任务’a’,但gulp足够聪明,任务’a’只运行一次.我想知道,因为任务以最大并发运行,gulp如何在运行之前解决依赖关系?
解决方法
记录它的一种更好的方法是“gulp(orchestrator)在考虑所有指定的依赖关系之后以最大可能的并发性运行.”
那么在你的场景中,c和d实际上是“并行”运行吗?嗯,是的,不.因为JavaScript是单线程的,所以从技术上讲,处理器可以执行c或d,但不能同时执行两者. Gulp(orchestrator)将启动a,等待它完成,然后启动c和d,并等待两者完成,然后启动b.
如果任务c和d完全异步,您将看到两者同时执行. (注意gulp定时输出交织在一起.)如果任务是完全同步的,从技术上讲,它们不会“并行”运行……只是因为JavaScript是单线程的.
这是最大可能的并发性,可以计算所有指定的限制.