UnluckySerivelha
@UnluckySerivelha

Как отдать браузеру результат выполнения асинхронной функции в express.js?

Пытаюсь сделать скриншотер сайтов с помощью express.js и puppeteer.js
Есть код, который пока что должен просто заскринить https://ya.ru, сгенерировать рандомное имя и вернуть страницу с этим скриншотом:
const express = require('express');
const puppeteer = require('puppeteer');

const app = express();
const port = 3000;

app.get('/', (req, res) => {

    //
    res.send('<img src="screenshots/' + getPic() + '">');
});

app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
});

function makeid(length) {
    var result           = '';
    var characters       = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    var charactersLength = characters.length;
    for ( var i = 0; i < length; i++ ) {
        result += characters.charAt(Math.floor(Math.random() * charactersLength));
    }
    return result;
}

async function getPic() {
    const screenName = makeid(5) + '.png';

    const browser = await puppeteer.launch({headless: true});
    const page = await browser.newPage();
    await page.goto('https://ya.ru');
    await page.setUserAgent('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36');
    await page.setViewport({ width: 375, height: 812 });
    await page.screenshot({path: 'screenshots/' + screenName});
    await browser.close();
    return screenName;
}

Но функция getPic() возвращает [object Promise].
Как правильно поместить в res.send результат выполнения функции getPic() ?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
@Che603000
c 2011 javascript
app.get('/', (req, res) => {
   getPing().then(data=> res.send('<img src="screenshots/' + data + '">'));
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы