javascript - 在 page.evaluate 中等待 page.waitFor ?

标签 javascript node.js time puppeteer

我想知道你是否可以做类似的事情

 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 循环为了一个简单的延迟执行数千次

最佳答案

  1. await 只能在 async 函数中使用。
  2. evaluate 中的函数将在页面上下文中进行计算,因此:

使用setTimeout():

page.evaluate(() => {
     //Code to execute before
     setTimeout(function() {
       //Code to execute after the 1000ms time delay
     }, 1000);    
 });

或者在puppeteer 中编写类似于page.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
 });

关于javascript - 在 page.evaluate 中等待 page.waitFor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59332343/

相关文章:

javascript - 如何在 javascript 中实现区域/代码折叠

node.js - MongoDB 提取子文档作为实际文档

mysql - 在mysql中获取时间间隔

php - 我怎样才能得到明天 00h10 的时间戳?

oracle - 如何在PL/SQL Developer中保持连接状态?

javascript - Angular Material 拖放 : Custom Pipe Issue

javascript - 每次运行单元格时,Jupyter 笔记本方程数都会增加

javascript - JavaScript 中的 JSON 数组中的键数是否有上限?

node.js - 如何将新的 firebase 模拟器添加到我现有的项目中?

node.js - 使用 pm2 将环境变量传递给 node.js