Maison > interface Web > js tutoriel > Comment implémenter des retards dans Puppeteer : setTimeout vs waitForTimeout ?

Comment implémenter des retards dans Puppeteer : setTimeout vs waitForTimeout ?

Patricia Arquette
Libérer: 2024-11-21 11:24:10
original
497 Les gens l'ont consulté

How to Implement Delays in Puppeteer: setTimeout vs waitForTimeout?

Retarder l'exécution dans Puppeteer

Dans Puppeteer, attendre efficacement une durée spécifiée avant de poursuivre l'exécution peut être obtenu par diverses méthodes. Une approche courante consiste à utiliser la fonction setTimeout dans une fonction d'évaluation. Cependant, vous pouvez rencontrer des cas où setTimeout semble être contourné.

Pour résoudre ce problème, vous pouvez implémenter une fonction de délai personnalisée qui utilise une promesse. Définissez une fonction appelée delay(time), qui accepte un paramètre time et renvoie une promesse. Dans cette fonction, configurez un résolveur setTimeout pour suspendre l'exécution pendant la durée spécifiée.

function delay(time) {
    return new Promise(function (resolve) {
        setTimeout(resolve, time)
    });
}
Copier après la connexion

Vous pouvez ensuite appeler delay(4000) chaque fois que vous souhaitez introduire un délai de 4 secondes.

console.log('before waiting');
await delay(4000);
console.log('after waiting');
Copier après la connexion

Alternativement, Puppeteer fournit une fonction waitForTimeout intégrée qui simplifie le processus. Utilisez simplement page.waitForTimeout(4000).

Si vous insistez pour utiliser page.evaluate, vous pouvez résoudre la promesse après le délai souhaité. Le code suivant illustre cette approche :

await page.evaluate(async () => {
    await new Promise(function (resolve) {
        setTimeout(resolve, 1000)
    });
});
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal