Я пытаюсь реализовать асинхронность в каждом цикле на nodejs.
У меня есть переменная html, которая содержит содержимое страницы. Там я хочу перебрать все div, которые имеют определенный класс. Внутри этих div'ов есть несколько ссылок, по которым я хочу перейти и получить от них контент. Таким образом, в основном, так как каждый ожидает синхронную функцию, он не ожидает выполнения другого кода.
Я пытался сделать это так:
const browser = await puppeteer.launch({
headless: true
});
const page = await browser.newPage();
const page2 = await browser.newPage();
const mainUrl = "http ... ";
const html = await page.goto(mainUrl)
.then(function() {
return page.content();
});
await $('.data-row', html).each(function() => {
const url = await $(this).find(".link-details a").attr("href");
page2.goto(url)
.then(function() {
const title = await page.evaluate(el => el.innerHTML, await page.$('#title'));
// do other things
});
// do other things
// create a json with data add it to a list
});
Но заголовок дает неопределенное значение и выполняется после завершения цикла ... Что я могу сделать здесь?