puppeteer中,我想在进入下一行代码之前等待定义的时间.

我试着在求值函数中加setTimeout,但它似乎被忽略了

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

这段代码不需要等待,只需要写before waitingafter waiting

你知道怎么做吗?

推荐答案

你可以使用一些promise 函数,

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

然后,想耽搁的时候随时打电话.

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

如果必须使用Puppeter,请使用内置的waitForTimeout函数.

await page.waitForTimeout(4000)

如果你仍然想使用页面.判断,4秒后解决.你没有解决任何问题.

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

但我想你可以简单地使用前两个例子.

Node.js相关问答推荐

Node.js 大文件上传到 MongoDB 阻塞了事件循环和工作池

如果 express.js (node.js) http 请求在完成之前关闭会发生什么?

fs.writefile 选项参数的可能值,尤其是只读文件的整数

cURL 和 shell 任务

无服务器无法获取所有记录事件对象验证失败?

如何申请在NextJS上下载文件的许可?

如何覆盖嵌套的 NPM 依赖版本?

Electron 5.0.0“未捕获的 ReferenceError:未定义要求”

修复安装 NPM 包的upstream 依赖冲突

NPM:找不到“npm link”模块后

服务器发现和监控引擎已弃用

节点 --experimental-modules - 错误:找不到模块

如何修复 Node.js 中的“ReferenceError: primordials is not defined”

错误消息:MongoError: bad auth Authentication failed through URI string

`npm install` 后出现关于 python 语法错误的错误?

npm install 给出警告,npm audit fix 不起作用

找不到模块'@babel/core'

如何禁用 React JS 应用程序的源映射

如何通过 AWS SDK Javascript 使用 Async 和 Await

如何包含节点二进制 npm 的路径