我正在使用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){}
任何想法为什么?
答案 0 :(得分:0)
您没有在while循环中递增j
。因此它永远不会退出。
尝试在j++;
大括号内添加while (j < nb_test){}
。
答案 1 :(得分:0)
您的回调永远不会运行,因为您永远不会退出当前事件循环。将回调到exec
的异步操作留出,以便在当前循环完成后执行。因此节点将执行整个脚本中的所有同步代码,并且只有在此之后它才会开始处理回调。通过在脚本中放置一个永无止境的while
循环,您可以使Node无法执行任何回调。 while循环只是旋转,回调耐心地等待它完成。目前尚不清楚为什么你想要最后一个循环,但希望这有助于你理解它造成的行为。