退出前的Console.log页面内容

时间:2019-06-24 15:09:31

标签: node.js puppeteer

有时候我的木偶程序由于未处理的诺言而永远挂起,所以我以为我用一个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在异步函数之外,所以我不能使用await,并且得到了:

Promise { <pending> }

我如何实现我的目标?谢谢。

1 个答案:

答案 0 :(得分:1)

您忘了等待超时功能,每个功能都需要它自己的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();
})();