Remarque : cet article est extrait du livre "Secrets of the JavaScript Ninja" de John Resig . Je l'ai traduit uniquement pour l'apprentissage de tous. Veuillez me corriger s'il y a des lacunes dans la traduction.
Cet article explique principalement la minuterie sous les aspects suivants :
Les minuteries sont quelque chose que nous comprenons peu et sont souvent abusées. Elles sont une fonctionnalité de JavaScript. En fait, cela peut nous aider beaucoup dans le développement d’applications complexes. Les minuteries offrent la possibilité de retarder de manière asynchrone l'exécution de fragments de code. JavaScript est intrinsèquement monothread (seule une partie du code js peut s'exécuter dans un certain intervalle de temps). Les minuteries nous permettent d'éviter cette méthode de limitation, ouvrant ainsi la voie. une autre façon d'exécuter le code.
Fait intéressant, contrairement à une idée reçue, les timers ne font pas partie du langage JavaScript, mais font partie des méthodes et des objets introduits par le navigateur. Cela signifie que si vous choisissez de l'exécuter dans un environnement sans navigateur, il est probable que le minuteur n'existera pas et que vous devrez implémenter votre propre version en utilisant des fonctionnalités spécifiques (telles que les threads Rhino).
1. Comment fonctionne la minuterie
Fondamentalement, il est important de comprendre comment fonctionnent les minuteries. Souvent le comportement d'un timer n'est pas intuitif car il se trouve dans un thread séparé, commençons par un test de trois fonctions, pour chacune desquelles nous avons la possibilité de construire et de contrôler le timer.
Afin de comprendre le fonctionnement des timers en interne, il y a un concept important qui doit être abordé : les délais ne sont pas garantis. Étant donné que tout le JavaScript du navigateur s'exécute dans un seul thread, les événements asynchrones (tels que les clics de souris, les minuteries) ne s'exécuteront que lorsqu'il y aura un état ouvert pendant l'exécution. L'exemple suivant illustre bien ce problème :
Il y a beaucoup d'informations à digérer dans ce diagramme, le comprendre pleinement vous donnera une meilleure idée de l'exécution asynchrone de js, le diagramme est unidimensionnel, dans le sens vertical se trouve le temps (horloge murale), mesuré en millisecondes. La case bleue représente la proportion d'exécution de js. Par exemple, l'exécution du premier bloc javascript prend environ 18 secondes, le clic de souris prend environ 11 secondes et ainsi de suite.