2015-05-05 54 views
0

使用以下代碼,我可以通過console.log獲取項目所需的數據。但是,考慮到數據變量是本地的,我在導出它用於全局上下文時遇到了麻煩,所以我可以在我的項目的另一個文件中使用這些數據。錯誤是當控制檯在另一個文件中記錄這些數據時'data'沒有被定義。有人可以解釋爲什麼以下內容不會導出以及潛在的解決方案嗎?使用請求庫在全局上下文中處理響應數據

var cheerio = require("cheerio") 
var request = require("request") 
var promise = require("promise") 

var data; 

request('https://www.numberfire.com/nba/fantasy/full-fantasy-basketball-projections', function (error, response, html) { 
    if (!error && response.statusCode == 200) { 
    var $ = cheerio.load(html) 
    var variable = $('script')[1].children[0].data 
    data = variable.substring(variable.indexOf("= ")+2, variable.indexOf(";")) 
    } 
}) 

module.exports = data; 
+0

爲什麼你把它標記爲[tag:promise]?該守則沒有承諾。而且,你要求的東西幾乎不可能。 –

回答

0

requestasync函數和該代碼將在需要的時間模塊運行。但是當時間碼運行時,數據仍然是undefined

module.exports = undefined;

,以後你不能獲得通過變量的指針私人data值。

請求之前

module.exports - >未定義

數據 - >未定義

請求

module.exports後 - >未定義(它不能指向到數據變量!!!!)

data - >變量。子字符串(變量.indexOf(「=」)+2,變量。索引(「;」))