Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Javascript中的bash脚本以相反的顺序执行?_Javascript_Bash_Asynchronous - Fatal编程技术网

为什么Javascript中的bash脚本以相反的顺序执行?

为什么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(`

我提前道歉,因为我对Javascript知之甚少,而且在Bash方面有更多的经验。 我需要导入几个脚本并让JS运行它

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
命令,它将最后打印。