我陷入了一些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命令之前对其进行处理。只是让我在循环中堆叠回调。请帮忙