我正在尝试理解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/'));
答案 0 :(得分:0)
是和否。
第一个语句始终在第二个语句开始之前执行并完成。这与大多数编程语言一样都是正确的。
然而第一个语句的目标/任务(复制'src / test-1.txt'到'dest /')在第二个语句的目标/任务之前没有必要完成(copy'src / test-2 .txt'到'dest /').
首先可以复制test-1.txt,然后复制test-2.txt,反之亦然。它取决于运行时,操作系统,文件系统,文件大小等。
同样异步与并行性无关。
异步执行代码意味着您将任务排入队列,并且不要等到语句完成之前完成(例如setTimeout
)。这些任务可以串行或同时执行(很可能是串行执行JS)。
而同步执行只是意味着你等到任务完成才能完成语句。
并行意味着您同时执行任务(即使用线程)。