nodeJ的回调共享变量
nodeJs callbacks sharing variables?
所以我的nodejs代码有问题。我尝试使用此功能从一些服务器收集一些信息。
背景:我有一些服务器,它们只是控制和监控的东西,还有一些是用来工作的。我调用代码中的函数,如
// 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 = []
}
});
}
}
}
}
}
经过一些调试,我可以看到我存储回调以计数它们的数组似乎被覆盖了。所以现在一个非常愚蠢的问题。。。为什么?我减轻了困难,每个回调函数都有自己的作用域,所以它们为什么会互相覆盖。
我真的希望你能帮我,这让我发疯了。
您没有声明imageNodeArray
。在JavaScript中,如果您在没有通过var
关键字声明标识符的情况下为标识符分配值,那么该变量将在全局范围内隐式创建。
您需要:
var imageNodeArray = JSON.parse(jsonString);
相关文章:
- 如何使用jqueryAJAX从页面中回调多个变量
- 查询后websql成功回调无法访问变量
- 如何在javascript回调函数中返回多个变量
- 使用Javascript中的回调处理变量分配
- 如何从ajax成功回调函数中读取javascript变量
- 如何在ajax回调中使用类变量
- 在 Angular 指令中,如何进行回调,其中函数名称位于父范围的变量中
- Node.js使变量等待分配,直到回调函数完成
- 我可以在javascript中的回调函数中为变量赋值吗
- Javascript变量作用域:从回调函数中提取变量
- 由于异步回调,变量被覆盖
- 节点 js 将变量传递到请求回调函数中
- 带有全局变量、咖啡脚本和回调的模块 CSV
- 如何在Typescript中的回调中访问类变量
- 参数化javascript中异步函数链的变量回调,jQuery
- YepNope/Modernizr 回调,包含全局 JavaScript 变量和 Internet Explorer
- nodeJ的回调共享变量
- 谷歌加自定义共享按钮回调
- 如何在angular http请求的错误和成功回调之间共享变量
- 用更多的变量javascript封装单个变量回调函数