Сегодня я перехожу на следующий этап своего веб-сканера!Асинхронный двойной обратный вызов в петле NodeJS
Я уже зацикливаюсь на массиве url с async
, и я бы снова зациклился на этом обратном вызове и дождался его exectution перед перезагрузкой.
Я не могу понять, как использовать два обратных вызова.
Это мой код:
var getWebData = function(url) {
var data = [];
async.eachSeries(url, function(urlSingle, cb) {
request(urlSingle, function(err, resp, body) {
if (!err) {
var $ = cheerio.load(body);
var categoriesURL = [];
$('.ombre_menu li').each(function(i, element) {
$(this).find('.nav_sous-menu_bloc li a').each(function(i, element) {
categoriesURL.push('https://blabla' + $(this).attr('href'));
})
// I WANT TO LOOP on the categoriesURL array HERE
var jsObject = { name : "", description : "", price: "", categorie: "", liter: "", kilo: "", pricePer: "", quantity: "", capacity: "", promotion: "", scrapingDate : "", url: "" };
data.push(jsObject);
})
}
cb();
})
}, function() {
// this will rum when loop is done
var json = JSON.stringify(data);
fs.writeFile('output.json', JSON.stringify(json, null, 4), function(err) {
console.log('File successfully written!');
});
});
}
getWebData(url);
app.listen('8080');
Кто-нибудь знает, как я могу сделать?
Thanks
Большое спасибо @Sangharsh за ваш ответ, но я не знаю, как использовать этот код ... – rastafalow
У вас есть какие-то особые сомнения? – Sangharsh
Я попробовал код, заменил urlSingle по url (потому что у меня был ReferenceError: urlSingle не определен), и похоже, что у меня бесконечный цикл. @Sangharsh – rastafalow