2015-05-27 93 views
1
var fs = require('fs'); 
var request = require('request'); 
var cheerio = require('cheerio'); 

var link = "www.google.com"; 

request(link, function (error, response, html) { 

    if (!error && response.statusCode == 200) { 

     var $ = cheerio.load(html); 

     //scrape article 
     $('.someclass').filter(function() { 

      var data = $(this); 
      var description = data.html(); 

      //write data to file 
      fs.appendFile('description.txt', description + "\n", function (err) { 
       if (err) 
        throw err; 
       //console.log('The "description" was appended to file!'); 
      }); 

     }) 

    } 
}); 

我在我的node.js中使用此代碼來獲取一些數據。但我想全局使用變量描述(請求過程之外)。我已經嘗試過,但沒有成功。這個怎麼做?JavaScript全局使用本地變量

編輯:這是我問的另一個問題。上面的這個問題和問題給了我同樣的問題。解決他們中的一個或兩者將會有很大幫助。

node.js multiple functions within request

+1

@ArmandGrillet和它很相似,但這個問題是關於瀏覽器JavaScript和這是一個節點問題。 – Pointy

+1

'request()'調用是**異步**。即使你使'description'相對全局,你將不能使用它的值直到稍後調用回調。從異步操作中返回值基本上沒有意義。 – Pointy

+1

對不起,我發送了錯誤的鏈接。這是[這個問題]可能的重複(http://stackoverflow.com/questions/2788159/turn-javascript-local-variable-into-global-variable)。 –

回答

0

會放置描述變量請求功能外具有僞值的工作? 如:

var fs = require('fs'); 
var request = require('request'); 
var cheerio = require('cheerio'); 

var link = "www.google.com"; 
var description="placeholder"; 
request(link, function (error, response, html) { 
... 

      description = data.html(); 
... 
} 
+0

通常,這對於request()是什麼異步操作不起作用。 – jfriend00

+0

試過了。沒有工作。 – macroscripts

+0

這是解決相同問題的另一種方法。 http://stackoverflow.com/questions/30489087/node-js-multiple-functions-within-request/30489246?noredirect=1#comment49057000_30489246 – macroscripts