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 循环只是旋转,回调耐心地等待它完成。目前还不清楚为什么要最后一个循环,但希望这能帮助您理解它导致的行为。
我正在使用 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 循环只是旋转,回调耐心地等待它完成。目前还不清楚为什么要最后一个循环,但希望这能帮助您理解它导致的行为。