2015-05-28 54 views
0

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

壳代码:

#!/usr/bin/env bash 

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

吞代码:

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!” ,然后输出“变换EN成功!”; 为什么不“变换EN成功!”然后“转换降价成功!” ?

回答

0

节点进程本身不是异步的。 (节点是异步的)

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

+0

但是,如果这样做: process.exec('taskA'); process.exec('taskB'); TaskA的结果需要共享给taskB,taskB无法获得结果, 这两个进程是异步的? – henry