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

标签 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(`${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() 是异步的。

谢谢大家

关于javascript - 为什么我的 Javascript 中的 bash 脚本以相反的顺序执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50915817/

相关文章:

javascript - 我的 req.params.id 未定义。我该如何修复我的路线以使其正常工作

javascript - dojo 中的状态服务器端过滤

javascript - 从单链表中删除元素(javascript)

linux - 如何剪切前n列和后n列?

file - 如何将 bash 参数传递给 awk 脚本?

bash - 如何在shell脚本中生成uuid

javascript - 返回带 .then() 和不带 .then() 的 Promise 有什么区别?

javascript - 显示来自 jquery 对象的数据?

python在线程中的exec脚本中中断无限循环

c# - 以非阻塞方式调用 TaskCompletionSource.SetResult