Javascript nodeJs回调共享变量?
所以我的nodejs代码有问题。 我尝试使用此功能从一些服务器收集一些信息 背景: 我有一些服务器只是控制和监控的东西,还有一些是工作的。 我这样调用代码中的函数Javascript nodeJs回调共享变量?,javascript,node.js,Javascript,Node.js,所以我的nodejs代码有问题。 我尝试使用此功能从一些服务器收集一些信息 背景: 我有一些服务器只是控制和监控的东西,还有一些是工作的。 我这样调用代码中的函数 // 1 callback cmd.execute('getInformationScript ' + controlToken, function(queryResult){ exctractInfo(queryResult, function(result){ setcNodes(res
// 1 callback
cmd.execute('getInformationScript ' + controlToken, function(queryResult){
exctractInfo(queryResult, function(result){
setcNodes(result)
});
});
//2 callback
cmd.execute('getInformationScript ' + imageToken, function(queryResult){
exctractInfo(queryResult, function(result){
setiNodes(result)
});
});
function exctractInfo(jsonString, callbackSucc){
var callbackArray = [];
var callbackResultArray = []
if(jsonString != null){
imageNodeArray = JSON.parse(jsonString);
for(imageNodes in imageNodeArray){
for(imageDetail in imageNodeArray[imageNodes]){
if ('name' in imageNodeArray[imageNodes][imageDetail]){
var name = imageNodeArray[imageNodes][imageDetail]['name'];
callbackArray.push(imageNodeArray[imageNodes][imageDetail])
// variable problem
cmd.execute('getInfomationFromServer.sh '+name+'', function(shellResult){
callbackResultArray.push(JSON.parse(shellResult));
if(callbackResultArray.length == callbackArray.length){
imageNodeArray[imageNodes] = mapCallbacks(callbackArray,callbackResultArray);
callbackSucc(imageNodeArray);
imageNodeArray = []
}
});
}
}
}
}
}
经过一些调试后,我可以看到我存储回调以进行计数的数组似乎被覆盖了。所以现在一个非常愚蠢的问题。。。为什么?
我认为每个回调函数都有自己的作用域,所以为什么它们会互相覆盖
我真的希望你能帮我这让我发疯。你没有声明
imagenoderray
。在JavaScript中,如果您在没有通过var
关键字声明标识符的情况下为标识符赋值,那么该变量将在全局范围内隐式创建
你需要:
var-imagenoderray=JSON.parse(jsonString)代码>非常感谢。我真的没看到这个小虫子,但现在所有的虫子都跑得很快。