节点如何按顺序处理 运行

how node process run in sequence

节点进程是异步的,但是这些代码如何运行顺序?

shell代码:

#!/usr/bin/env bash

cd app_en_us && gulp transformMarkdown &&
echo 'Transform EN success!'

gulp代码:

gulp.task('transformMarkdown', function(){
var process = require('child_process');

process.exec('cd $SLATE && bundle exec middleman build && echo "transform markdown success!"\
', consoleMsg);

});

每次我运行 shell,都会输出"transform markdown success!",然后输出put "Transform EN success!"; 为什么不 "Transform EN success!" 然后 "transform markdown success!" ?

Node 进程本身不是异步的。 (不过, 节点中的很多很多东西都是异步的。)

Node 进程不会 return 控制 bash shell 直到 process.exec() 运行 它的回调。所以你的回调在你的下一个 bash 命令之前执行。它不是守护进程,不会强迫自己在后台 运行。