如何为node.js中的全局变量赋值?

时间:2015-10-06 16:40:06

标签: javascript node.js cheerio

我最近遇到了一个问题:如何为全局变量赋值?

当我尝试返回a时,我发现它是未定义的,而我想分配给它的“值”并不是未定义的。

我的代码是这样的:

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;   
});

1 个答案:

答案 0 :(得分:0)

问题是您的request函数是异步的,然后,return a语句将在您设置a = value之前发生。

实现目标的一种方法是使用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