ホームページ >ウェブフロントエンド >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 では、さまざまな方法で実行を継続する前に指定された期間効果的に待機することができます。一般的なアプローチの 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。