首頁 > web前端 > js教程 > 如何在 Puppeteer 中實現延遲:setTimeout 與 waitForTimeout?

如何在 Puppeteer 中實現延遲:setTimeout 與 waitForTimeout?

Patricia Arquette
發布: 2024-11-21 11:24:10
原創
474 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板