有时候我的木偶程序由于未处理的诺言而永远挂起,所以我以为我用一个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> }
我如何实现我的目标?谢谢。
答案 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();
})();