这些gulp语句是在Node内并行或串行运行的吗?

时间:2017-02-07 02:20:08

标签: javascript node.js asynchronous gulp

我正在尝试理解Node如何异步(并行)和同步运行(串行)运行。

来自同步JavaScript背景我希望下面的第一个语句首先运行,然后只有在它完成之后节点才会尝试运行第二个语句。

我是否正确地假设这个?

// first statement
gulp.src('src/test-1.txt')
    .pipe(gulp.dest('dest/'));

// second statement
gulp.src('src/test-2.txt')
    .pipe(gulp.dest('dest/'));

1 个答案:

答案 0 :(得分:0)

是和否。

第一个语句始终在第二个语句开始之前执行并完成。这与大多数编程语言一样都是正确的。

然而第一个语句的目标/任务(复制'src / test-1.txt'到'dest /')在第二个语句的目标/任务之前没有必要完成(copy'src / test-2 .txt'到'dest /').

首先可以复制test-1.txt,然后复制test-2.txt,反之亦然。它取决于运行时,操作系统,文件系统,文件大小等。

同样异步与并行性无关。 异步执行代码意味着您将任务排入队列,并且不要等到语句完成之前完成(例如setTimeout)。这些任务可以串行或同时执行(很可能是串行执行JS)。

而同步执行只是意味着你等到任务完成才能完成语句。

并行意味着您同时执行任务(即使用线程)。