La boucle d'événement et le blocage des boucles While
Le concept d'une boucle while bloquant la boucle d'événement dans Node.js découle de la nature inhérente de l'architecture basée sur les événements de Node.
La boucle d'exécution principale de Node vérifie en permanence les événements dans sa file d'attente d'événements. Lorsqu'un événement est disponible, il exécute la fonction de rappel associée tout en bloquant tous les autres événements.
Comment se produit le blocage :
Dans l'exemple fourni dans la question d'origine, la boucle while vérifie à plusieurs reprises la valeur de open. La boucle d'événements étant bloquée par l'exécution de la boucle, elle ne peut pas traiter le rappel de délai d'attente programmé et mettre à jour la variable ouverte.
Conséquence du blocage :
Ce blocage empêche le le code ne se comporte pas comme prévu : le message de sésame ouvert n'est jamais enregistré. Au lieu de cela, la boucle continue de tourner indéfiniment.
Solution :
Pour éviter de bloquer la boucle d'événements, il faut restructurer le code pour utiliser une approche basée sur les événements. Au lieu d'utiliser une boucle while, il faut enregistrer un écouteur pour l'événement ouvert et exécuter le code souhaité dans cet écouteur.
Voici une version modifiée du code qui utilise un écouteur d'événement :
<code class="javascript">// Listen for the open event emitter.on('open', function() { // Code to execute when the open event occurs console.log('open sesame'); });</code>
Avantages de l'utilisation d'écouteurs d'événements :
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!