带有包含请求的循环的回调数组
callback array with a loop containing request
我试图返回食谱数组,但它似乎是空的。我猜那是因为回调在循环执行之前被执行。我怎么能解决这个在这种情况下,我循环与cheerio?
function scrapeNow(url, callback) {
request(url, function(error, response, html){
// First we'll check to make sure no errors occurred when making the request
if(!error){
var recipes = [];
var $ = cheerio.load(html);
$('div.article-block a.picture').each(function(i, elem) {
console.log(i);
var deepUrl = $(this).attr('href');
if(!$(this).attr('href').indexOf("tema") > -1) {
request(deepUrl, function(error, response, html){
// First we'll check to make sure no errors occurred when making the request
if(!error){
var $ = cheerio.load(html);
var image = $('div.article div.article-main-pic img').attr('src');
var title = $('div.recipe h2.fn').text();
var object = {url: deepUrl, title : title, image : image};
recipes.push(object);
}
});
}
});
callback(recipes);
}
});
}
我猜这是因为回调在循环执行之前被执行。
不,这是因为在你的循环中有另一个请求
request(deepUrl, function(error, response, html){
和recipes在此请求的完整回调(匿名函数)中填充。
把callback(recipes)
放到这个完整的回调中
相关文章:
- 如何将angularjs中的javascript字符串输出为循环数组
- 如何从某个位置顺时针和逆时针循环数组
- 赢得't循环数组javascript
- 通过循环数组内容
- 使用RegExp循环数组而不是for循环(Javascript)
- 如何在背景图像的循环数组中预加载图像
- 如何在循环数组内部推送变量值
- Javascript循环数组无限不起作用
- 如何循环数组
- 如何使用Handlebars循环数组对象和模板
- PHP同时循环数组数据显示到javascript中
- 如何使用上一个/下一个功能循环数组中的图像
- 如何循环数组并保持它们之间的索引增长
- Javascript循环数组以查找可被3整除的数字
- 以变量作为属性的循环数组
- 嵌套的“for”循环 - 数组未定义
- 在具有主干和车把的模型中循环数组
- 数组在 for 循环与第二个 for 循环数组 JavaScript 合并
- 对于javascript和jquery的循环数组问题
- 在循环数组 javascript 后替换对象属性值中的字符串