一尘不染

up:等待N秒,然后继续下一行

node.js

puppeteer中, 我想等待定义的时间后再转到下一行代码。

我尝试将a setTimeout放入评估函数中,但似乎只是被忽略了

console.log('before waiting');
await page.evaluate(async() => {
  setTimeout(function(){
      console.log('waiting');
  }, 4000)
});
console.log('after waiting');

此代码不等待,仅 在等待之前之后 编写 __

你知道怎么做吗?


阅读 172

收藏
2020-07-07

共1个答案

一尘不染

您可以使用一点承诺功能,

function delay(time) {
   return new Promise(function(resolve) { 
       setTimeout(resolve, time)
   });
}

然后,在需要延迟的任何时候调用它。

console.log('before waiting');
await delay(4000);
console.log('after waiting');

如果必须使用操纵符,请使用内置的waitFor函数。

await page.waitFor(4000)

如果仍然要使用page.evaluate,请在4​​秒钟后解决。您没有解决任何问题。

await page.evaluate(async() => {
    await new Promise(function(resolve) { 
           setTimeout(resolve, 1000)
    });
});

但是我想您可以简单地使用前两个示例。

2020-07-07