从Web scraper返回数据,异步问题

时间:2017-03-04 07:25:57

标签: javascript node.js callback

我陷入了一些javascript回调问题。在成功https://github.com/rchipka/node-osmosis之前,我已使用节点库从客户端网站抓取数据。现在我需要它在另一个循环中刮擦并返回。我会稍微贬低代码,但它是这样的。

// within a loop of another parsing library (simplified)
 .on("data", function(obj){
   listing = { 
    listing['img'] = scrape(obj['ID']); 
   }
   priceArray.push(listing);
 })
 .on("end", function(){
    // use this data
 })

 // osmosis scrape function to be used inside loop
 // just need it to return value so it can be pushed into array above
 function scrape(id){

   osmosis
    .get('http://www.xxxxxx.com/searchnew.aspx?sv=~'+ id)
    .find('.productImg > a')
    .set('img', '@img')
    .data(function(listing) {
      newImg = listing;
    })
    .done(function() {
      return newImg;
     });

 }

现在我知道这是回调函数,并且在done参数内返回不是正确的方法。但是如果我在scrape函数中设置一个变量并在底部返回它的空白bc,则在运行osmosis命令之前对其进行处理。只是让我在循环中堆叠回调。请帮忙

0 个答案:

没有答案