Nodejs Exec 不执行

Nodejs Exec doesn't execute

我正在使用 Nodejs 创建一个测试器模块。所以我需要使用exec。 此代码有效且运行良好:

const { exec } = require('child_process');

var nb_test = 1
var return_array = [nb_test];
var finished = 0;

var i = 0;

while (i < nb_test)
{
    var env = { "NB_MALLOC": i.toString()};
    console.log("coucou");
    console.log(i);
    exec("ls", { env }, function (error, stdout, stderr) {
        console.log(stdout);
        return_array[i] = { stdout, error, stderr };
        finished++;
    });
    i++;
}

但是如果我最后有这个,什么都不执行,代码永远不会进入回调

 j = 0
while (j < nb_test){}

知道为什么吗?

您没有在 while 循环内递增 j。因此它永远不会退出。

尝试在 while (j < nb_test){} 大括号内添加 j++;

您的回调永远不会 运行 因为您永远不会退出当前事件循环。像 exec 回调这样的异步操作被预留到当前循环完成后执行。所以节点将执行整个脚本中的所有同步代码,只有在这之后它才会开始处理回调。通过在脚本中放置一个永无止境的 while 循环,您可以让 Node 无法执行任何回调。 while 循环只是旋转,回调耐心地等待它完成。目前还不清楚为什么要最后一个循环,但希望这能帮助您理解它导致的行为。