PC & Mobile

Boucle d'événement en JavaScript – Investisseur axé sur les données – Moyenne

Boucle d'événement en JavaScript - Investisseur axé sur les données - Moyenne


Même si JS est à thread unique, il ne se comporte pas en tant que tel. Si tel était le cas, chaque fois qu'un service était appelé, la pile d'appels bloquait tous les autres processus, attendait la fin du service, puis procédait aux autres tâches. Cela augmenterait le temps d’exécution (personne ne le veut), mais nous savons tous que ce n’est pas le cas avec JS.

Modifions l'exemple ci-dessus et ajoutons un setTimeOut fonction, qui se comportera comme un appel de service:

fonction service () {
console.log ("service appelé")
}
fonction un () {
renvoyer deux ();
}
fonction deux () {
renvoyer trois ();
}
fonction trois () {
renvoyer quatre ();
}
fonction quatre () {
renvoyer "terminé";
}
setTimeout (service, 1000)
console.log (un ());

À présent, setTimout est un async méthode, qui prend une fonction de rappel en tant que paramètre. Le deuxième paramètre est le temps après lequel le rappel est déclenché.

Comprenons le processus, comment async les fonctions sont exécutées. Comme nous le savons, pour exécuter une fonction, nous devons l’appeler. Nous pouvons l'invoquer en utilisant un déclencheur, et ce déclencheur est généralement un événement (comme onClick, onBlur, timeout).

Nous avons besoin d'une structure de données qui mappe un événement à une méthode particulière. Cette structure de données est la Table d'événement. Mais ça table d'événements mappe uniquement la méthode à un événement et n'appelle pas la méthode elle-même. La table des événements envoie plutôt la méthode à la File d'attente d'événementet, comme son nom l'indique, il s'agit d'une file d'attente de méthodes à exécuter dans le bon ordre / séquence.

Boucle d'événement

Maintenant, c'est ici, l'infâme Boucle d'événement entre dans l'image, pour faire sa magie.

le boucle d'événement est fondamentalement une boucle sans fin, qui continue à vérifier s'il y a quelque chose à exécuter dans la pile d'appels. Si la pile d'appels est vide, elle vérifie la file d'attente d'événements afin de déterminer si quelque chose doit être déplacé vers la pile d'appels. Si une méthode est présente, elle est déplacée vers la pile d'appels et la méthode est exécutée.

Visualisons l’exemple ci-dessus:

* Remarque: supposons que chaque méthode, une, deux, trois, quatre prend 500 millisecondes pour terminer son exécution

setTimeout se fait appeler ->
setTimeout est déplacé vers le Table d'événement

* une méthode s'appelle ->
* on est ajouté à la pile d'appels
* on appelle deux ->
* deux sont ajoutés à la pile d'appels
* deux appels trois->
* trois sont ajoutés à la pile d'appels
* trois appels quatre ->
* quatre sont ajoutés à la pile d'appels
Par la méthode du temps Trois se termine, c’est plus de 1000 ms.
le table d'événements envoie le un service méthode à la file d'attente d'événements.
Toutes les méthodes sont exécutées et la pile d'appels devient vide.
le boucle d'événement vérifie la file d'attente d'événements, et trouve le un service méthode présente. 
Il déplace la méthode vers la pile d'appels et un service est exécuté.

Pour résumer, le boucle d'événement est un processus qui tourne sans fin et dont le seul travail est de surveiller et de transférer les méthodes vers la pile d’appels à partir de la file d’événements.

Connaître le fonctionnement de la pile d’appels et de la boucle d’événements vous aidera à mieux comprendre le fonctionnement de JavaScript en arrière-plan.

  • Les intervieweurs adorent utiliser de tels exemples pour tester votre compréhension de JS.
Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close