Maison  >  Article  >  interface Web  >  Comment implémenter un délai dans Puppeteer ?

Comment implémenter un délai dans Puppeteer ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-17 05:08:03650parcourir

How to Implement a Time Delay in Puppeteer?

Attente d'une durée spécifiée dans Puppeteer

Dans Puppeteer, les développeurs rencontrent parfois le besoin de suspendre l'exécution pendant une période définie avant de passer à l'exécution. prochaine ligne de code. Bien que les tentatives d'incorporation de setTimeout dans les fonctions d'évaluation puissent sembler une solution viable, elles rencontrent souvent un comportement inattendu.

Solutions pour suspendre l'exécution

  1. Promesse -Based Delay : Une méthode simple et efficace consiste à définir une fonction de retard comme une promesse, puis à l'invoquer chaque fois qu'une pause est souhaitée.
function delay(time) {
   return new Promise(function(resolve) { 
       setTimeout(resolve, time)
   });
}

Par exemple, pour faire une pause de 4 secondes :

console.log('before waiting');
await delay(4000);
console.log('after waiting');
  1. page.waitForTimeout : Puppeteer fournit une fonction intégrée spécialement conçue pour l'attente.
await page.waitForTimeout(4000)
  1. Évaluer résolu : Si la fonction page.evaluate est préférée, il est crucial de résoudre la promesse une fois le délai souhaité écoulé.
await page.evaluate(async() => {
    await new Promise(function(resolve) { 
           setTimeout(resolve, 1000)
    });
});

Recommandation

Bien que l'approche d'évaluation puisse être utilisée, les deux premières méthodes sont généralement plus simples et efficaces.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn