在 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中文網其他相關文章!