javascript - 如何将 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 被阻止
解决方案
setTiemout
试试这个(另外,你的代码中有一个错字):
await page.evaluate(() => {
return new Promise((resolve) => {
setTimeout(() => { console.log('timeout'); resolve(); }, 100);
});
});
推荐阅读
- powershell - 如何在 VS 代码中保留每个项目的 PowerShell 命令(历史记录键)?
- javascript - php。如果 Cookie 存在,请执行此操作 - 否则执行此操作
- flutter - Flutter - Cloudinary 如何获取上传的图片网址?
- typo3 - TYPO3 从 v9 升级到 V10 延迟加载错误
- r - R - Timeseries、autoplot()、scale_y_continuous() 和消失的 geom_abline()
- three.js - 移动设备相机时如何将对象粘贴在three.js中的某个位置
- javascript - 将 javascript 函数的结果返回到 Blazor 服务器中的变量
- python - 为什么我在 KFold 中得到不同数量的火车尺寸
- git - 使用命令行保护主分支并合并拉取请求
- algorithm - 快速查找重叠范围的数据结构?(例如日期、数字)