2015-10-06 86 views
0

最近我遇到了一个问题:我如何给全局变量赋值?如何将值赋给node.js中的全局变量?

当我尝试返回一个,我发现这是未定义的,并且我想分配给它的“值”不是未定义的。

我的代码是这样的:

module.exports = function (jsonStr) { 
    var a; 
    request(main_url, function(error, response, html) { 
     if(!error) { 
      ... 
      request(sub_url, function(error, response, html) { 
       if(!error) { 
        ... 
        a = value; 
        ... 
       } 
      } 
     }  
    } 
    return a; 
}); 
+0

将“var a”替换为“”。但是,不要使用全局变量;根据需要将东西粘贴到“出口”上。 – dandavis

+0

这是因为'a = value'是异步执行的(在'module.exports'的**函数完成执行后,分配发生**)。你应该做的就是对你的函数进行回调,将'a'作为参数。 (例如'function(jsonStr,callback)') – JCOC611

+0

http://stackoverflow.com/questions/32407269/why-cant-i-see-this-json-in-the-console – Soren

回答

0

的问题存在,你的request功能是异步的,然后你设置a = value之前将出现return a声明。

一个达到你想要什么样的方式是使用the asyncawait library,是这样的:

module.exports = async(function (jsonStr) { 
    var a; 
    var sub_url = await(request(main_url)); 
    a = await(request(sub_url)); 
    return a; 
}); 

看看this QA

+0

太棒了,谢谢! –