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

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

Patricia Arquette
Patricia Arquette原創
2024-11-21 11:24:10472瀏覽

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