Maison > interface Web > js tutoriel > le corps du texte

Méthode Javascript setTimeout – Tout ce que vous devez savoir

Patricia Arquette
Libérer: 2024-11-10 17:57:03
original
1001 Les gens l'ont consulté

Javascript setTimeout method - All you need to know

Introduction

JavaScript est un langage de programmation puissant qui permet aux développeurs de créer des applications Web dynamiques et interactives. Une fonctionnalité importante de JavaScript est la fonction de la méthode Javascript setTimeout, qui permet l'attente javascript.

Comprendre comment utiliser efficacement setTimeout est crucial pour contrôler le timing et le flux de vos programmes JavaScript. Dans ce guide complet, nous plongerons en profondeur dans le monde de la méthode Javascript setTimeout et explorerons ses différentes fonctionnalités.

Que vous soyez débutant ou développeur expérimenté, cet article vous fournira toutes les connaissances nécessaires pour exploiter tout le potentiel de setTimeout dans vos projets JavaScript.

Alors, préparez-vous à maîtriser l'art du timing en JavaScript et débloquez de nouvelles possibilités pour créer des applications Web réactives et efficaces.

Plongeons dans le monde de setTimeout et découvrons tous ses secrets !

Conditions préalables

Avant de plonger dans le monde de setTimeout, il est utile d'avoir une compréhension de base de JavaScript et de ses concepts fondamentaux. La familiarité avec les variables, les fonctions et le flux de contrôle de base (tels que les instructions if et les boucles) facilitera la compréhension des concepts abordés dans cet article.

Si vous débutez avec JavaScript ou si vous avez besoin d'un rappel, de nombreuses ressources en ligne sont disponibles pour apprendre les bases. Des sites Web tels que MDN Web Docs, W3Schools et freeCodeCamp proposent des didacticiels et des guides complets qui peuvent vous aider à démarrer votre parcours JavaScript.

De plus, je recommande fortement les deux livres suivants pour les débutants en JavaScript :

Programmation JavaScript tête première : un guide adapté au cerveau

JavaScript : le guide définitif : maîtrisez le langage de programmation le plus utilisé au monde

(et oui, je les fournis gratuitement)

En plongeant dans ces ressources, vous acquerrez une base solide en programmation JavaScript, vous dotant des connaissances nécessaires pour explorer les subtilités de setTimeout et débloquer de nouvelles possibilités dans vos projets de développement Web.

Donc, avant de plonger dans les subtilités de setTimeout, assurez-vous d'avoir une base solide en programmation JavaScript.

Une fois que vous êtes prêt, explorons la puissance de setTimeout et débloquez de nouvelles possibilités dans vos projets de développement Web.

Le but de setTimeout

Pour commencer, comprenons d'abord le but de setTimeout.

setTimeout est couramment utilisé dans les scénarios dans lesquels vous souhaitez introduire des retards, planifier des événements ou effectuer des tâches à des intervalles de temps spécifiques.

un peu déroutant, non ?

Comprenons cela avec un exemple :

Remarque : veuillez éviter de penser à sa syntaxe pour l'instant. nous discuterons du Syntex plus tard.

Supposons que vous souhaitiez déclarer une fonction mais qu'au lieu de l'appeler immédiatement, vous souhaitiez l'appeler après une certaine période de temps.

C'est là que setTimeout entre en scène. Il fournit la fonctionnalité permettant de retarder l'exécution d'une fonction.

Jetez un œil au code suivant :

function greetUser() {  
 console.log('Hello, user!') 
}  
setTimeout(greetUser, 1000)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans cet exemple, nous avons une fonction appelée greetUser qui enregistre simplement un message d'accueil sur la console. Nous souhaitons retarder l'exécution de cette fonction de 1 seconde.

Pour y parvenir, nous utilisons la fonction setTimeout et passons la fonction greetUser comme premier argument et 1000 comme deuxième argument.

Et c'est tout !

Lorsque vous exécutez ce code, Javascript attendra 1 seconde, puis imprimera le message de bienvenue "Bonjour, utilisateur !" à la console.

Syntaxe et paramètres de ** setTimeout**

Pour utiliser efficacement setTimeout, il est important de comprendre sa syntaxe et ses paramètres.

La syntaxe de base de setTimeout est la suivante :

setTimeout(function, delay, param1, param2, ...);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Décomposons les différents composants :

Le premier paramètre est la fonction ou l'extrait de code que vous souhaitez exécuter après le délai spécifié. Il peut s'agir d'une fonction nommée ou d'une fonction anonyme.

Le deuxième paramètre delay représente l'intervalle de temps en millisecondes avant le début de l'exécution du code. Il détermine la durée du délai avant que la fonction spécifiée ne soit invoquée.

Les paramètres supplémentaires, tels que param1, param2, etc., sont facultatifs. Vous pouvez les utiliser pour transmettre des arguments à la fonction spécifiée dans le premier paramètre.

Ces paramètres setTimeout permettent de personnaliser le comportement de la fonction lors de son exécution.

Le setTimeout() **renvoie un **timeoutID qui est un entier positif identifiant le timer créé à la suite de l'appel de la méthode. Le timeoutID peut être utilisé pour annuler le délai d'attente en le transmettant à la méthode clearTimeout() dont nous parlerons dans un autre article.

Remarque : Si la syntaxe vous semble confuse, ne vous inquiétez pas !

Dans les prochaines sections de ce blog, nous explorerons en détail divers exemples et cas d'utilisation pour chaque paramètre. Je vous assure qu'en lisant l'article complet, vous comprendrez clairement comment utiliser setTimeout efficacement.

Alors, soyez patient et continuez à lire pour libérer tout le potentiel de cette puissante fonction JavaScript.

Répartition du code setTimeout

Je sais que vous avez déjà une idée de ce qui est arrivé au code que nous avons utilisé auparavant. Mais pour renforcer notre compréhension, décomposons le code ensemble :

function greetUser() {  
 console.log('Hello, user!') 
}  
setTimeout(greetUser, 1000)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans cet extrait de code :

  1. Nous définissons une fonction appelée greetUser en utilisant le mot-clé function. Cette fonction est chargée d'imprimer le message d'accueil sur la console.

  2. Nous utilisons la fonction setTimeout pour planifier l'exécution de la fonction greetUser après un délai spécifié. Le délai est fixé à 1000 millisecondes, ce qui équivaut à 1 seconde.

  3. Le premier argument passé à setTimeout est la référence de la fonction greetUser. Cela indique à setTimeout quelle fonction exécuter après le délai spécifié.

  4. Le deuxième argument 1000 représente le délai en millisecondes. Il détermine le délai avant le début de l'exécution du code.

En utilisant setTimeout, nous demandons à JavaScript d'attendre 1 seconde, puis d'invoquer la fonction greetUser. En conséquence, le message de bienvenue « Bonjour, utilisateur ! » sera imprimé sur la console.

Utiliser la fonction anonyme comme rappel

Dans l'exemple de code précédent, nous avons utilisé une fonction nommée comme fonction de rappel dans la fonction setTimeout.

Cependant, setTimeout vous permet également de fournir une fonction anonyme comme rappel qui sera exécuté après le délai spécifié.

Les fonctions anonymes sont couramment utilisées lorsque le code à exécuter est simple et ne nécessite pas de fonction nommée distincte.

Voici un exemple :

setTimeout(function, delay, param1, param2, ...);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans ce cas, la fonction anonyme sert de rappel. Il enregistre un message sur la console après un délai de 1000 millisecondes (ou 1 seconde).

Vous pouvez remplacer l'instruction console.log par n'importe quel code que vous souhaitez exécuter après le délai. L'utilisation de fonctions anonymes comme rappels dans setTimeout offre de la flexibilité et vous permet de définir et d'exécuter du code en ligne sans avoir besoin de déclarations de fonction distinctes.

Passer des arguments à la fonction de rappel

Dans la fonction de rappel setTimeout, vous pouvez facilement transmettre des paramètres ou des arguments.

Supposons que vous ayez une fonction qui accepte des paramètres et que vous souhaitiez fournir des valeurs spécifiques à ces paramètres lorsque la fonction est exécutée après le délai :

function greetUser() {
  console.log('Hello, user!')
}

setTimeout(greetUser, 1000)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans cet exemple, la fonction greet est programmée pour attendre 5 secondes (5 000 millisecondes) et l'argument John est passé comme paramètre de nom.

Vous pouvez ajuster le délai et les valeurs des arguments en fonction de votre cas d'utilisation spécifique.

En utilisant cette approche, vous pouvez personnaliser le comportement de la fonction de rappel en passant différentes valeurs comme arguments, permettant une exécution de code plus dynamique et flexible.

Voici quelques conseils supplémentaires pour transmettre des arguments à la fonction de rappel :

  • Vous pouvez transmettre n'importe quel nombre d'arguments à la fonction de rappel.
  • Les arguments seront transmis à la fonction de rappel dans le même ordre dans lequel ils ont été transmis à setTimeout.
  • Si vous transmettez un nombre variable d'arguments à la fonction de rappel, vous pouvez utiliser l'objet arguments pour y accéder.

Voici un exemple ci-dessous :

function greetUser() {  
 console.log('Hello, user!') 
}  
setTimeout(greetUser, 1000)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans cet exemple, la fonction processArgs imprime chaque argument avec son index correspondant sur la console. Le résultat sera :

setTimeout(function, delay, param1, param2, ...);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Passer des littéraux de chaîne

Passer une chaîne comme premier argument à setTimeout au lieu d'une fonction peut entraîner des problèmes potentiels et n'est généralement pas recommandé.

Il présente des problèmes similaires à ceux de l'utilisation de eval().

Voici un exemple de transmission d'un littéral de chaîne à setTimeout :

function greetUser() {
  console.log('Hello, user!')
}

setTimeout(greetUser, 1000)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans ce cas, la chaîne "console.log('Hello World!');" est évaluée comme code dans le contexte global à l'expiration du délai d'attente.

Cependant, utiliser une chaîne de cette manière peut poser des problèmes car l'évaluation se déroule dans un contexte différent et les symboles ou variables locaux peuvent ne pas être disponibles.

Pour éviter ces problèmes, il est recommandé de passer plutôt une fonction comme premier argument à setTimeout. Cela garantit que le code est exécuté dans le contexte correct et a accès aux symboles locaux.

Voici une approche alternative utilisant une fonction comme rappel :

setTimeout(function () {  
 console.log('This code executes after the delay') 
}, 1000)

Copier après la connexion
Copier après la connexion

Dans cet exemple, une fonction fléchée est utilisée comme rappel. La fonction flèche fournit un moyen concis et plus sûr d'exécuter du code après le délai spécifié.

Il évite les pièges associés au passage de littéraux de chaîne à setTimeout et garantit que le code est exécuté dans la portée correcte.

En passant une fonction au lieu d'une chaîne, vous pouvez garder un meilleur contrôle sur le contexte d'exécution et éviter les problèmes potentiels d'accès aux variables ou symboles locaux.

Valeur de retard maximale

La valeur de délai maximale pouvant être définie dans la fonction de la méthode Javascript setTimeout dépend de l'implémentation de JavaScript et de l'environnement dans lequel elle s'exécute.

Dans la plupart des navigateurs et environnements JavaScript modernes, la valeur de délai maximale est d'environ 2^31 - 1 milliseconde, soit environ *24,85 * jours. Si vous essayez de définir une valeur de retard supérieure à ce maximum, elle sera automatiquement fixée à la valeur maximale autorisée.

Par conséquent, si vous devez planifier une tâche qui dépasse ce délai maximum, vous devrez peut-être envisager des approches alternatives ou utiliser une combinaison de plusieurs appels setTimeout.

Il convient de noter que les valeurs de délai extrêmement longues doivent être utilisées avec prudence, car elles peuvent ne pas être fiables ou pratiques pour de nombreux scénarios du monde réel. Si vous avez besoin d'un timing précis ou de délais plus longs, vous souhaiterez peut-être explorer d'autres techniques ou API spécialement conçues à ces fins.

Voici quelques approches alternatives pour planifier des tâches qui dépassent la valeur de délai maximale :

Utilisez une combinaison de plusieurs appels setTimeout. Cela peut être utilisé pour diviser une longue tâche en morceaux plus petits qui peuvent être planifiés individuellement.

Utilisez un fil ou un processus en arrière-plan. Cela peut être utilisé pour exécuter des tâches qui n'ont pas besoin d'interagir avec le thread principal ou l'interface utilisateur.

Utilisez une bibliothèque tierce ou une API. Il existe un certain nombre de bibliothèques et d'API disponibles qui prennent en charge la planification de tâches avec des délais plus longs.

La meilleure approche pour planifier une tâche qui dépasse la valeur de délai maximale dépendra des exigences spécifiques de la tâche.

Le problème ce

Lorsque vous utilisez setTimeout avec une méthode, vous pouvez rencontrer un problème de mot clé this, où la valeur de this à l'intérieur de la méthode diffère de vos attentes.

Ce problème survient en raison de la manière dont setTimeout fonctionne et du contexte d'exécution distinct qu'il utilise.

Par défaut, lorsqu'une méthode est invoquée à l'aide de setTimeout, la this valeur à l'intérieur de la méthode est définie sur la fenêtre (ou globale) object au lieu de l'objet que vous vouliez.

Ce comportement peut conduire à des résultats inattendus, comme le montre l'exemple suivant :

function greetUser() {  
 console.log('Hello, user!') 
}  
setTimeout(greetUser, 1000)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans l'exemple ci-dessus, lorsque myMethod est appelé directement sur myArray, cette valeur est correctement définie sur myArray.

Cependant, lors de l'utilisation de setTimeout avec myArray.myMethod, cette valeur par défaut est l'objet window.

Pour surmonter ce problème, vous pouvez utiliser quelques solutions :

  • Utilisez une fonction wrapper :

Une approche courante consiste à utiliser une fonction wrapper qui définit explicitement la valeur this souhaitée :

setTimeout(function, delay, param1, param2, ...);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Fonction flèche comme fonction wrapper :

Les fonctions fléchées ne lient pas leur propre valeur et en héritent de la portée environnante.

Ce comportement peut être exploité pour maintenir la valeur this attendue dans la fonction de rappel.

Voici un exemple d'utilisation d'une fonction fléchée comme rappel avec setTimeout :

function greetUser() {
  console.log('Hello, user!')
}

setTimeout(greetUser, 1000)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans ce cas, la fonction flèche n'a pas sa propre liaison this et utilise à la place la valeur this de la portée environnante, qui est la valeur attendue de myArray.

L'utilisation d'une fonction fléchée comme rappel peut fournir une solution concise et pratique à ce problème lorsque vous travaillez avec setTimeout et des méthodes.

Il est important de noter que les fonctions fléchées présentent certaines différences de comportement par rapport aux fonctions normales. Il est donc essentiel de considérer leurs implications et de choisir la solution la plus adaptée en fonction de votre cas d'utilisation spécifique.

function greetUser() {  
 console.log('Hello, user!') 
}  
setTimeout(greetUser, 1000)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
  • Utiliser la liaison : Une autre option consiste à utiliser la méthode bind() pour lier la valeur this souhaitée à la méthode :
setTimeout(function, delay, param1, param2, ...);
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

En utilisant bind(), vous créez une nouvelle fonction qui est liée en permanence à la valeur spécifiée, garantissant qu'elle reste cohérente lorsqu'elle est transmise à setTimeout ou appelée ailleurs.

Ces solutions aident à résoudre ce problème lors de l'utilisation de setTimeout avec des méthodes, vous permettant de maintenir le contexte souhaité et d'éviter un comportement inattendu.

Délais imbriqués

Les délais d'attente imbriqués font référence à la situation dans laquelle une fonction setTimeout est appelée dans la fonction de rappel d'un autre setTimeout.

Cette approche peut être utilisée pour créer une séquence d'événements chronométrés ou pour introduire des délais entre des actions consécutives.

Voici un exemple pour illustrer les délais d'attente imbriqués :

function greetUser() {
  console.log('Hello, user!')
}

setTimeout(greetUser, 1000)
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Dans cet exemple, nous avons trois fonctions setTimeout imbriquées les unes dans les autres. Chaque setTimeout a sa propre fonction de rappel et son propre délai.

Le premier setTimeout s'exécute après 500 millisecondes, le deuxième s'exécute après 1 000 millisecondes (1 seconde) à compter du premier délai d'attente et le troisième s'exécute après 2 000 millisecondes (2 secondes) à compter du deuxième délai d'attente.

Lorsque vous exécutez ce code, il affichera ce qui suit :

setTimeout(function () {  
 console.log('This code executes after the delay') 
}, 1000)

Copier après la connexion
Copier après la connexion

En imbriquant les délais d'attente, vous pouvez créer une séquence d'actions qui se produisent à différents intervalles de temps. Cela peut être utile pour les scénarios dans lesquels vous devez orchestrer une série d'événements ou introduire des délais entre des opérations spécifiques.

Cependant, il est important d'être conscient de la complexité potentielle qui peut résulter de délais d'attente profondément imbriqués. À mesure que le nombre de délais d'attente imbriqués augmente, le code peut devenir plus difficile à lire et à maintenir.

Dans de tels cas, des approches alternatives telles que l'utilisation de async/await ou de bibliothèques/frameworks qui gèrent les opérations asynchrones peuvent être plus appropriées.

N'oubliez pas d'utiliser les délais d'attente imbriqués judicieusement et envisagez d'autres options en fonction de la complexité et des exigences de votre code.

Conclusion

La fonction setTimeout est un outil fondamental en JavaScript, permettant aux développeurs de créer des expériences dynamiques et interactives sur le Web.

En maîtrisant setTimeout, vous obtenez la possibilité de contrôler le timing, de planifier des tâches et de créer des applications sophistiquées. Grâce aux informations et aux exemples partagés dans ce blog, vous êtes désormais en mesure d'exploiter efficacement setTimeout et de libérer tout le potentiel des capacités de minuterie de JavaScript.

Vous disposez désormais d'un outil puissant pour gérer les tâches liées au timing, gérer les retards et créer des applications Web plus interactives et dynamiques.

N'oubliez pas de pratiquer et d'expérimenter setTimeout pour approfondir votre compréhension et libérer tout son potentiel. Grâce à ces connaissances, vous êtes bien équipé pour exploiter la puissance de setTimeout et améliorer les fonctionnalités de vos applications JavaScript.

Bon codage :)

Ressource

  • https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout

  • https://www.javascripttutorial.net/javascript-bom/javascript-settimeout/

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:dev.to
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