Puppeteer での実行の遅延
Puppeteer では、さまざまな方法で実行を継続する前に指定された期間効果的に待機することができます。一般的なアプローチの 1 つは、評価関数内で setTimeout 関数を利用することです。ただし、setTimeout がバイパスされているように見える場合があります。
この問題に対処するには、Promise を利用するカスタム遅延関数を実装できます。この関数は、時間パラメータを受け取り、Promise を返します。この関数内で、指定された時間実行を一時停止するように setTimeout リゾルバーを設定します。
function delay(time) { return new Promise(function (resolve) { setTimeout(resolve, time) }); }
その後、4 秒の遅延を導入したい場合はいつでも、lay(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 中国語 Web サイトの他の関連記事を参照してください。