2016-04-13 74 views
0

我是Node.js的新手,我想從其他網站上刪除一些沒有任何法律問題相關的數據,但是由於Node.js的異步,存在一些問題。請參閱下面的代碼,使用Cheerio.js請求一些URL和解析文檔。Node.js使用來自異步函數的返回對象

function getPrices() { 
    var url = "http://some-price-list-url.com"; 

    request(url, function (err, res, html) { 
     var $ = cheerio.load(html); 
     var prices = {}; 

     for(var i=0; i<10; i++){ 
      prices[i] = $(span[class="someSelector"]); 
     } 

     return prices; 

    }); 

} 

與上面的代碼沒有問題,所以我想顯示返回的對象,所以

var prices = getPrices(); 

console.log(prices); // ---> undefined 

我想顯示安慰返回的對象,但它顯示undefined。我測試沒有流任務的相同結構代碼,它運行良好。所以我猜console.loggetPrices()尚未完成之前嘗試過。我如何正確顯示這個對象?

+0

爲什麼你就不能日誌'prices'回調函數裏面? –

+0

@mparnisari日誌不是真正的目的,無論如何,我找到了解決方案。加入遞歸:'if(i == 9){callback(prices);回報價格; }' – Juntae

+0

然後以這種方式顯示價格:'getPrices('005930',function(prices){console.log(prices);})'。我想出了寫一個問題的解決方案...對不起 – Juntae

回答

0

嘗試這樣:

var http = require('http'); 

http.get('http://some-price-list-url.com', function(response) 
{ 
    response.on('data', function(data) 
    { 
     console.log(data); 
    }); 
});