javascript - 在 puppeteer 中等待 page.waitFor inside page.evaluate?
问题描述
我想知道你是否可以做类似的事情
page.evaluate((page) => {
//Code to execute before
await page.waitFor(1000);
//Code to execute after the 1000ms time delay
}, page);
如果这是不可能的,那么如何引入这样的时间延迟?
哦,最后一点,做这样的事情对于我的项目中的时间延迟来说不是一个可行的选择:
function delay(time) {
let curtime = new Date().getTime();
time += curtime;
while(curtime < time) {
curtime = new Date().getTime();
}
}
CPU对此很重要,我不想让一些while循环执行数千次以获得简单的延迟
解决方案
await
只能在async
函数中使用。- 函数 in
evaluate
将在页面上下文中进行评估,因此:
使用setTimeout()
:
page.evaluate(() => {
//Code to execute before
setTimeout(function() {
//Code to execute after the 1000ms time delay
}, 1000);
});
或者编写类似于puppeteerpage.waitFor
的异步延迟函数。
function waitFor(delay) {
return new Promise(resolve => setTimeout(resolve, delay));
}
然后你将拥有:
page.evaluate(async() => {
//Define your waitFor function
//Code to execute before
await waitFor(1000);
//Code to execute after the 1000ms time delay
});
推荐阅读
- ruby-on-rails - 如果电子邮件在 Ruby 中包含“+”到 %2B,如何对其进行编码
- javascript - 为未定义的变量填充 javascript 变量检查?
- python - 合并两个字典?
- protractor - 验证排序选项是否适用于量角器
- r - 缺失数据警告 R
- c# - 如何使用 C# 在 Gridview 上查找 HTML 标签元素
- node.js - 如何使 expressjs/ejs 中的样式表呈现通用?
- swift - 我想通过单击 UISegmented Control 来切换 UIView 但我的代码不起作用
- apache-kafka - 获取异常,无法使用数据库 DB2 上的查询值(CURRENT_TIMESTAMP)从数据库获取当前时间
- php - 重力视图插件未在编辑模式下显示所有数据