Доброго времени суток! В данный момент пишу бекэнд на Node.JS. У меня есть массив ссылок
arr
.
Мне необходимо совершать представленные ниже операции применяя каждый элемент этого массива. Написав код ниже я пришёл к выводу, что
map
выполняется не в той последовательности, которая мне нужна — отсюда ошибки.
В данный момент код исполняется в таком порядке:
Исходная ссылка до условия
url[0]
Исходная ссылка до условия
url[1]
Начало негативного условия
Исходная ссылка в негативном условии
url[0]
Начало негативного условия
Исходная ссылка в негативном условии
url[1]
Конец негативного условия
Конец негативного условия
Нужный порядок:
Исходная ссылка до условия
url[0]
Проверка условия для
url[0]
Исходная ссылка до условия
url[1]
Проверка условия для
url[1]
Вывод значений, должно получится:
[
{ vat: vat, url: url },
{ vat: vat, url: url }
]
В данном коде использован
puppeteer
, всё что относится к нему начинается на: "
await page
".
Собственно код:
const promises = arr.map(async (url, key) => {
console.log('Исходная ссылка до условия ' + url);
await page.goto(url);
await page.waitForSelector('td.sp-properties-form__value');
if (await page.$eval('td.title-card-page__right-column > table.company-stats > tbody > tr.company-stats__item:nth-child(2) td.company-stats-item__label span.text-mutted', el => el.textContent) === "Головная компания") {
console.log('Начало позитивного условия');
const newurl = await page.$eval('td.title-card-page__right-column > table.company-stats > tbody > tr.company-stats__item:nth-child(2) span.white-space-normal > a', el => el.href);
console.log('Новая ссылка ' + newurl)
await new Promise(r => setTimeout(r, getRandom()));
await page.goto(newurl);
await page.waitForSelector('td.sp-properties-form__value');
const vat = await page.$eval('td.company-reg-codes span.sp-delimited-list__item:nth-child(2) span.entity-reg-code__value span', el => el.textContent);
res[key] = { vat: vat, url: newurl };
console.log('Конец позитивного условия');
} else {
console.log('Начало негативного условия');
console.log('Исходная ссылка в негативном условии ' + url)
const vat = await page.$eval('td.company-reg-codes span.sp-delimited-list__item:nth-child(2) span.entity-reg-code__value span', el => el.textContent);
res[key] = { vat: vat, url: url };
console.log('Конец негативного условия');
}
return res[key]
})
const result = await Promise.all(promises)
console.log(result)
Заранее спасибо!