为什么Javascript中的bash脚本以相反的顺序执行?
我提前道歉,因为我对Javascript知之甚少,而且在Bash方面有更多的经验。 我需要导入几个脚本并让JS运行它为什么Javascript中的bash脚本以相反的顺序执行?,javascript,bash,asynchronous,Javascript,Bash,Asynchronous,我提前道歉,因为我对Javascript知之甚少,而且在Bash方面有更多的经验。 我需要导入几个脚本并让JS运行它 const exec = require('child_process').exec; var process = function (done) { var script1 = exec('sh script1.sh', (error, stdout, stderr) => { utils.output(`
const exec = require('child_process').exec;
var process = function (done) {
var script1 = exec('sh script1.sh',
(error, stdout, stderr) => {
utils.output(`${stdout}`);
utils.output(`${stderr}`);
if (error !== null) {
utils.output(`exec error: ${error}`);
}
});
var script2 = exec('sh script2.sh',
(error, stdout, stderr) => {
utils.output(`${stdout}`);
utils.output(`${stderr}`);
if (error !== null) {
utils.output(`exec error: ${error}`);
}
});
utils.output(script1);
utils.output(script2);
}
脚本1.sh:
echo "==== script 1 ===="
脚本2.sh:
echo "==== script 2 ===="
输出:
==== script 2 ====
==== script 1 ====
为什么这些输出的顺序是相反的?正如Barbar所说,这是因为exec()是异步的
谢谢大家。这是一个同步问题(在我看来是这样的)。。。轻读:
exec()
是异步的。它们可能是并发执行的,输出按完成的顺序打印。尝试向scipt 2添加sleep
命令,它将最后打印。