2015-10-06 75 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

太棒了,謝謝! –