在puppeteer中,我想先等待定义的时间,然后再转到下一行代码。
我试图将setTimeout
放在评估函数中,但似乎只是被忽略了
console.log('before waiting');
await page.evaluate(async() => {
setTimeout(function(){
console.log('waiting');
}, 4000)
});
console.log('after waiting');
此代码不等待,仅在等待之前和之后编写你知道怎么做吗?
最佳答案
您可以使用一点 promise 功能,
function delay(time) {
return new Promise(function(resolve) {
setTimeout(resolve, time)
});
}
然后,每当您需要延迟时都调用它。console.log('before waiting');
await delay(4000);
console.log('after waiting');
如果必须使用操纵符,请使用内置的waitForTimeout函数。await page.waitForTimeout(4000)
如果您仍要使用page.evaluate,请在4秒钟后解决。您没有解决任何问题。await page.evaluate(async() => {
await new Promise(function(resolve) {
setTimeout(resolve, 1000)
});
});
但是我想您可以简单地使用前两个示例。