在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 用node在網(wǎng)絡(luò)獲取數(shù)據(jù)時(shí),異步返回?cái)?shù)據(jù)后,同步已經(jīng)結(jié)束,,有沒(méi)有辦法retur

用node在網(wǎng)絡(luò)獲取數(shù)據(jù)時(shí),異步返回?cái)?shù)據(jù)后,同步已經(jīng)結(jié)束,,有沒(méi)有辦法return出去,到另一個(gè)模塊使用?

1.想用node和cheerio在網(wǎng)絡(luò)中抓取數(shù)據(jù),然后在另一個(gè)模塊中使用,但是因?yàn)槭钱惒将@取數(shù)據(jù),當(dāng)前的同步代碼都已經(jīng)執(zhí)行完畢,獲取到的變量或者return都為空,exports也無(wú)法導(dǎo)出,除了在處理函數(shù)中臨時(shí)使用或者存儲(chǔ)以外,有什么辦法能持續(xù)使用,或者導(dǎo)出到另一個(gè)模塊,return.

2.`function getTitle(url,i){
console.log('正在獲取第'+i+'頁(yè)的內(nèi)容');

http.get(url+i+'.html',res=>{
var chunks = [];
res.on('data',function(chunk){
  chunks.push(chunk);
});
res.on('end',function(){
  var html = iconv.decode(Buffer.concat(chunks),'gb2312');
  var $ = cheerio.load(html,{decodeEntities:false});
  var asyRes = $('.co_content8 .ulink');
  $('.co_content8 .ulink').each(function(index,ele){
    var dom = $(ele);
    titles.push({
      title:dom.text()
    })
  });
  if (i<2) {
    getTitle(url,++index);
    //獲取多頁(yè)數(shù)據(jù)
  }else {
    // if (titles) {
    //   save(titles);
    // }
    //讀取完畢后,在這里就卡住了..不知道如何把titles弄出來(lái)
  }
})

});
}`

回答
編輯回答
空白格

使用async/await,把異步請(qǐng)求寫(xiě)在async函數(shù)中,請(qǐng)求成功后return出去

2017年3月7日 17:49
編輯回答
孤酒

是我自己思路錯(cuò)了,想要使用數(shù)據(jù),只能做成一個(gè)持久的服務(wù)器,得到請(qǐng)求后,相應(yīng)一次使用..

2017年8月24日 17:55
編輯回答
雨萌萌

有很多方法異步獲取信息,可以使用回調(diào),可以使用Promise,可以使用async/await,看你喜好了

2017年12月11日 02:32