在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)
    });
});
但是我想您可以简单地使用前两个示例。

10-06 11:51