жду не дождусь метода - PullRequest
0 голосов
/ 25 мая 2019

Итак, я что-то отбрасываю, и мне нужно открыть браузер, чтобы получить один конкретный бит информации (остальная информация не нуждается в браузере, чтобы открываться). Так что теперь мне нужно подождать, пока откроется браузер, дать информацию и закрыть, прежде чем делать что-либо еще.

Я использую обещания и жду этого, но моя текущая реализация не ждет браузера и переходит к следующей итерации. Код выглядит как

//loops over every product
for (let j = 0; j < holder.length; j++) {
    await this.getDetails(this.productLink);
}

getDetails(url) {
    return new Promise(resolve => {
        request(url, async (error, response, html) => {
            if (!error && response.statusCode == 200) {
                const $ = cheerio.load(html);
                //gets some details


                //wait for browser
                await this.getSize(url).then(response => {
                    console.log(response)
                })
                resolve("done")
             }
        });
    });
}

getSize(url) {
    return new Promise(async resolve => {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--no-sandbox']
        });
        const page = await browser.newPage();
        await page.setViewport({
            width: 1200,
            height: 1080
        });
        await page.goto(url, {
            "waitUntil": "networkidle0"
        })
        let cl = await page.$(".input-box select");
        await cl.click();
        cl = await page.$(".input-box select");
        let html = await page.evaluate(e => e.innerHTML, cl)
        await browser.close();
        resolve(html);
    })
}

Ожидание this.getSize не ожидает завершения метода getSize. Что я делаю неправильно? Или что тут можно сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...