Nodejs Exec不执行

时间:2018-04-25 15:47:02

标签: node.js exec

我正在使用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){}

任何想法为什么?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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