Console.log 退出前的页面内容

Console.log page content before exit

有时我的人偶程序会因为未处理的承诺而永远挂起,所以我想我用关闭它的 setTimeout 启动程序。

var page;
var content;

const maxExecTime = 1000*60*5; // 5 min
setTimeout(function(){
    content = page.content();
    console.log('TIMEOUT');
    console.log(content);
    process.exit()
}, maxExecTime);

(async () => {      
    const browser = await puppeteer.launch();
    page = await browser.newPage();
    await page.goto('URL');

    ...

    await browser.close();
})();

我的目标是console.log程序关闭前页面的最后一个内容,但是setTimeout在async函数之外所以我不能使用await,我得到:

Promise { <pending> }

我怎样才能实现我的目标?谢谢

你忘了等待超时函数,每个函数都需要它自己的 async 关键字。

var page;
var content;

const maxExecTime = 1000*60*5; // 5 min
setTimeout(await function(){
    content = await page.content();
    console.log('TIMEOUT');
    console.log(content);
    process.exit()
}, maxExecTime);

(async () => {      
    const browser = await puppeteer.launch();
    page = await browser.newPage();
    await page.goto('URL');

    ...

    await browser.close();
})();