【发布时间】:2017-04-05 10:38:01
【问题描述】:
首先我想说的是,我宁愿使用 while() 循环或 do-while() 循环,但我有一个需要回调 stdout 的异步“子进程”函数。无论如何,在运行脚本时,我的函数没有在命令提示符中打印出 console.log(),而且似乎 exec 正在创建多个进程,即使我在最后添加了一个 .kill() 函数!
我认为我的问题是基于范围界定,但我无法确定哪里出错了。那么两个问题,为什么不能使用while循环,我的函数到底有什么问题?
var stdout;
function checkStatus() {
async.whilst(
function(){return stdout != "Connected";},
function(callback){
var state;
state = exec("C:/ADMIN/Viscosity/ViscosityCC.exe "+'getstate '+ 1, function (error, stdout, stderr) {
stdout = (stdout.toString()).replace("\r\n\r\n", "");
console.log(stdout);
});
state.kill();
callback();
},
function(err){
console.log("Error");
}
);
}
checkStatus();
【问题讨论】:
-
我不确定这是否能解决您的问题,但您的
var stdout范围在顶部,然后您将stdout变量也作为参数传递给 exec( ),您应该重命名其中任何一个。您可能没有修改您认为正在修改的stdoutvar。
标签: javascript node.js scopes