如何在NodeJS中将参数传递给异步函数?

问题描述 投票:0回答:3

我正在尝试使用puppeteer软件包从网站截取屏幕截图

为此我用Express创建了一个简单的服务器:

app.get('/requestScreenShootForDesktop/:id', function(req, res){
    (async () => {
        const pathUpload = 'uploads/' + Math.floor(Date.now() / 1000) + '.png';
        const browser = await puppeteer.launch();
        const page = await browser.newPage();
        await page.goto(this.req.params.id);
        await page.setViewport({width: 1920, height: 1080});
        await page.screenshot({path: pathUpload});

        await browser.close();
        await res.send({msg: 'ScreenShot Ok'});
      })();
});

这个代码的问题是在线await page.goto(this.req.params.id);,Node说:

无法读取未定义的属性'params'

这是因为属于函数req的变量app.get不存在于异步范围内。

如何解决这个问题,并将我的变量传递给异步函数?

javascript node.js async.js
3个回答
1
投票

放弃生命,不要使用qazxsw poi访问qazxsw poi

this

0
投票
req

0
投票

您可以保留IIFE,但删除app.get('/requestScreenShootForDesktop/:id', async function(req, res){ const pathUpload = 'uploads/' + Math.floor(Date.now() / 1000) + '.png'; const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(req.params.id); await page.setViewport({width: 1920, height: 1080}); await page.screenshot({path: pathUpload}); await browser.close(); res.send({msg: 'ScreenShot Ok'}); }); 关键字

© www.soinside.com 2019 - 2024. All rights reserved.