我想知道你是否可以做类似的事情
page.evaluate((page) => {
//Code to execute before
await page.waitFor(1000);
//Code to execute after the 1000ms time delay
}, page);
如果这不可能,那么如何引入这样的时间延迟?
哦,最后一点,做这样的事情对于我的项目中的时间延迟不是一个可行的选择:
function delay(time) {
let curtime = new Date().getTime();
time += curtime;
while(curtime < time) {
curtime = new Date().getTime();
}
}
CPU对此很重要,我不想有一些while循环执行数千次,只是为了简单的延迟
答案 0 :(得分:3)
await
仅可用于async
函数。 evaluate
中的函数将在页面上下文中求值,所以可以:使用setTimeout()
:
page.evaluate(() => {
//Code to execute before
setTimeout(function() {
//Code to execute after the 1000ms time delay
}, 1000);
});
或者在puppeteer中编写类似于page.waitFor
的异步延迟函数。
function waitFor(delay) {
return new Promise(resolve => setTimeout(resolve, delay));
}
那么您将拥有:
page.evaluate(async() => {
//Define your waitFor function
//Code to execute before
await waitFor(1000);
//Code to execute after the 1000ms time delay
});