Maison >interface Web >js tutoriel >Pourquoi JavaScript ne dort jamais : un guide simple de la boucle d'événements
JavaScript en tant que langage à thread unique : Mentionnez brièvement comment JavaScript ne gère qu'une seule tâche à la fois, mais la boucle d'événements donne l'impression du contraire
. Fonctionnement de la boucle d'événement : Les étapes clés du processus de boucle d'événement
Pile : La pile d'appels gère le code synchrone.
File d'attente : La file d'attente de rappel contient les tâches en attente d'exécution.
Boucle : La boucle d'événement vérifie si la pile est vide avant
déplacer les tâches de la file d'attente vers la pile.
Répartition du Workflow :
Exécution initiale du code :
console.log('Hi'); $.get('url', function cb(data) { console.log(data); }); console.log('JSConfEU');
Appel de fonction asynchrone ($.get) :
Ensuite, $.get('url', function cb(data) { ... }) est rencontré. Cette fonction lance une requête HTTP pour récupérer les données de « url ».
Au lieu de bloquer le thread principal, la requête est envoyée à l'environnement des API Web (qui fait souvent partie du navigateur).
La fonction de rappel (cb) est enregistrée pour s'exécuter une fois la requête HTTP terminée, mais elle n'est pas exécutée immédiatement. La requête HTTP continue de se charger dans la section API Web, marquée comme XHR (XMLHttpRequest), ce qui est typique pour le traitement des requêtes réseau.
Passer à la prochaine ligne synchrone :
Boucle d'événements et file d'attente de tâches :
Une fois tout le code synchrone terminé, la pile d'appels devient vide et JavaScript attend la fin de toutes les tâches asynchrones.
Une fois la requête HTTP terminée, la fonction de rappel (cb) est déplacée des API Web vers la file d'attente des tâches.
La boucle d'événements vérifie en permanence si la pile d'appels est vide et, lorsqu'elle l'est, la boucle d'événements déplace les tâches de la file d'attente des tâches vers la pile d'appels
Exécution du rappel :
Résumé :
Ce flux montre comment la boucle d'événement gère le code asynchrone
par :
Traitement du code synchrone immédiatement sur la pile d'appels.
Gérer les tâches asynchrones dans les API Web et, une fois terminées, les déplacer vers la file d'attente des tâches.
Permettre à la boucle d'événements de déplacer les tâches vers la pile d'appels uniquement lorsqu'elle est vide, garantissant ainsi une exécution de code non bloquante.
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!