1. ホーム
  2. javascript

[解決済み] puppeteer: 次の行に進む前にN秒待つ

2022-11-18 11:04:44

質問

パペッティア 次の行に行く前に定義された時間だけ待つようにしたいです。

を配置しようとしたのですが setTimeout を付けてみましたが、単に無視されるようです。

console.log('before waiting');
await page.evaluate(async() => {
  setTimeout(function(){
      console.log('waiting');
  }, 4000)
});
console.log('after waiting');

このコードでは、待たずに と書くだけです。 待機後

この方法を知っていますか?

どのように解決するのですか?

ちょっとしたプロミス関数を使うことができます。

function delay(time) {
   return new Promise(function(resolve) { 
       setTimeout(resolve, time)
   });
}

そして、遅延が必要なときに呼び出します。

console.log('before waiting');
await delay(4000);
console.log('after waiting');

どうしてもpuppeteerを使いたい場合は、組み込みのwaitForTimeout関数を使用します。

await page.waitForTimeout(4000)

それでもpage.evaluateを使いたい場合は、4秒後に解決してください。あなたは何も解決していません。

await page.evaluate(async() => {
    await new Promise(function(resolve) { 
           setTimeout(resolve, 1000)
    });
});

でも、単純に最初の2つの例を使えばいいんでしょうね。