Joh*_*ith 2 javascript time node.js puppeteer
我想知道你是否可以做类似的事情
page.evaluate((page) => {
//Code to execute before
await page.waitFor(1000);
//Code to execute after the 1000ms time delay
}, page);
Run Code Online (Sandbox Code Playgroud)
如果这是不可能的,人们将如何引入这样的时间延迟?
哦,最后一点,在我的项目中,做这样的事情不是延迟时间的可行选择:
function delay(time) {
let curtime = new Date().getTime();
time += curtime;
while(curtime < time) {
curtime = new Date().getTime();
}
}
Run Code Online (Sandbox Code Playgroud)
CPU 对此很重要,我不想让一些 while 循环执行数千次以进行简单的延迟
await只能在async函数中使用。evaluate将在页面上下文中进行评估,因此:使用setTimeout():
page.evaluate(() => {
//Code to execute before
setTimeout(function() {
//Code to execute after the 1000ms time delay
}, 1000);
});
Run Code Online (Sandbox Code Playgroud)
或写你的异步延时功能类似page.waitFor的木偶戏。
function waitFor(delay) {
return new Promise(resolve => setTimeout(resolve, delay));
}
Run Code Online (Sandbox Code Playgroud)
那么你将拥有:
page.evaluate(async() => {
//Define your waitFor function
//Code to execute before
await waitFor(1000);
//Code to execute after the 1000ms time delay
});
Run Code Online (Sandbox Code Playgroud)