Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodeJs回调共享变量?_Javascript_Node.js - Fatal编程技术网

Javascript nodeJs回调共享变量?

Javascript nodeJs回调共享变量?,javascript,node.js,Javascript,Node.js,所以我的nodejs代码有问题。 我尝试使用此功能从一些服务器收集一些信息 背景: 我有一些服务器只是控制和监控的东西,还有一些是工作的。 我这样调用代码中的函数 // 1 callback cmd.execute('getInformationScript ' + controlToken, function(queryResult){ exctractInfo(queryResult, function(result){ setcNodes(res

所以我的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 = []
              }
          });
        }
      }
    }
  }
}
经过一些调试后,我可以看到我存储回调以进行计数的数组似乎被覆盖了。所以现在一个非常愚蠢的问题。。。为什么? 我认为每个回调函数都有自己的作用域,所以为什么它们会互相覆盖


我真的希望你能帮我这让我发疯。

你没有声明
imagenoderray
。在JavaScript中,如果您在没有通过
var
关键字声明标识符的情况下为标识符赋值,那么该变量将在全局范围内隐式创建

你需要:


var-imagenoderray=JSON.parse(jsonString)

非常感谢。我真的没看到这个小虫子,但现在所有的虫子都跑得很快。