@kolomat

Как из Promise получить данные в отдельную переменную?

Подскажите по такому вопросу, есть функция
const getCategories = async (link) => {
    const browser = await puppeteer.launch({
        headless: true,
    })

    const page = await browser.newPage()

    await page.setViewport({
        width: 1400,
        height: 900,
    })

    await page.goto(link)

    let categoriesUrls = await page.evaluate(() => {
        let categories = []

        try {
            document.querySelectorAll('li.with-sub-menu > a').forEach(el => {
                categories.push(el.href)
            })
            return categories
        } catch (e) {
            console.log(e)
        }
    })
    return categoriesUrls
}

При ее вызове она возвращает Promise в котором массив ссылок
getCategories(link).then(console.log)
А как этот массив теперь достать и положить в отдельную переменную?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
Лирическое отступление

<лирическое отступление>
<!--
Читаешь вопрос в общем списке вопросов и думаешь: "ну опять 25...".
Открываешь вопрос, смотришь на код и думаешь: "а нет, что-то другое".
Читаешь текст после кода и думаешь: "эх.. а было так близко..."
-->
</лирическое отступление>



Код явно не Вы писали, да?
Гуглите - асинхронный код javascript. Promises. Async\Await.
Коротко:
async function getData(link) {
  const data = await getCategories(link)
  console.log(data)
}


Либо дальше работать в цепочке промисов. Без "отдельных" переменных.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы