首页 > web前端 > js教程 > 如何在 Puppeteer 中实现延迟:setTimeout 与 waitForTimeout?

如何在 Puppeteer 中实现延迟:setTimeout 与 waitForTimeout?

Patricia Arquette
发布: 2024-11-21 11:24:10
原创
519 人浏览过

How to Implement Delays in Puppeteer: setTimeout vs waitForTimeout?

在 Puppeteer 中延迟执行

在 Puppeteer 中,可以通过各种方法来实现在继续执行之前有效等待指定的时间。一种常见的方法是在评估函数中使用 setTimeout 函数。但是,您可能会遇到 setTimeout 似乎被绕过的情况。

要解决此问题,您可以实现一个利用 Promise 的自定义延迟函数。定义一个名为delay(time)的函数,它接受一个时间参数并返回一个Promise。在此函数中,设置 setTimeout 解析器以暂停执行指定的时间。

function delay(time) {
    return new Promise(function (resolve) {
        setTimeout(resolve, time)
    });
}
登录后复制

然后,只要您希望引入 4 秒的延迟,就可以调用delay(4000)。

console.log('before waiting');
await delay(4000);
console.log('after waiting');
登录后复制

或者,Puppeteer 提供了一个内置的 waitForTimeout 函数来简化该过程。只需使用 page.waitForTimeout(4000)。

如果你坚持使用 page.evaluate,你可以在所需的延迟后解决 Promise。以下代码演示了这种方法:

await page.evaluate(async () => {
    await new Promise(function (resolve) {
        setTimeout(resolve, 1000)
    });
});
登录后复制

以上是如何在 Puppeteer 中实现延迟:setTimeout 与 waitForTimeout?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板