JavaScript fournit deux fonctions de temporisation largement utilisées, setTimeout()
et setInterval()
. Ces deux fonctions exécutent une fonction spécifique après un laps de temps donné, une fois ou à plusieurs reprises. Bien que cela soit simple, de nombreuses personnes ne réalisent pas que la fonction le délai est simplement une suggestion et peut être modifié par un certain nombre de facteurs.
Les délais ne sont pas exacts
J’ai expliqué en détail comment les moteurs JavaScript exécutent le code dans l’explication sur les boucles d’événements, mais permettez-moi de récapituler ici. Comme JavaScript est monofilaire, les tâches sont mises en file d’attente pour être exécutées dans une boucle. Ainsi, setTimeout()
et setInterval()
sont des tâches qui seront exécutées après l’écoulement d’au moins le temps donné. Il n’y a cependant aucune garantie que la tâche sera exécutée exactement après l’écoulement du temps donné. Le délai est une suggestion, signifiant que le quantité minimale de temps qui doit s’écouler avant que la tâche ne soit exécutée. Le délai réel peut être plus long, en fonction de l’état actuel du moteur JavaScript.
Facteurs de navigation
En dehors des délais liés au moteur, il existe quelques autres facteurs qui jouent un rôle dans le délai réel d’une tâche. En bref, il s’agit de :
- Navigateurs Gestion des délais et des intervalles imbriqués dans les accélérateurs avec un délai d’au moins 4ms, mais cela peut varier en fonction du navigateur.
- Délais et intervalles dans Les onglets inactifs/en arrière-plan sont limités. à un minimum de 1000 ms pour augmenter la durée de vie de la batterie.
- Scripts de suivi connus dans les onglets d’arrière-plan peuvent être encore plus limités après un certain temps.
Par ailleurs, certains navigateurs stockent les délais sous la forme d’un nombre entier signé de 32 bits, ce qui signifie que les délais supérieurs à 24,8 jours entraîneront un dépassement et une exécution immédiate.