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

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

Patricia Arquette
Patricia Arquette原创
2024-11-21 11:24:10474浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn