首页 > 解决方案 > 如何将 setTimeout 与 puppeteer page.evaluate 一起使用

问题描述

我试图使用 page.evaluate 在 puppeteer 中每 100 毫秒运行一次,但是当我在设置超时后运行代码时没有任何反应。我尝试在非无头浏览器中运行,甚至在开发工具中运行 setTimeout 并没有发生任何事情,我应该怎么做才能使超时实际运行?

这是相关代码

await page.evaluate(async () => {
await new Promise<void>((resolve) => {
  setTimeout(() => console.log('timeout'), 100)
});
})

编辑:更多数据,如果我运行 page.evaluate(() => console.log('a')) 它可以工作,当我在非无头浏览器中运行它时,我看到 javascript 被阻止

标签: javascriptpuppeteer

解决方案


setTiemout试试这个(另外,你的代码中有一个错字):

  await page.evaluate(() => {
    return new Promise((resolve) => {
      setTimeout(() => { console.log('timeout'); resolve(); }, 100);
    });
  });

推荐阅读