Comprendre la programmation asynchrone et synchrone dans Node.js
En explorant le site Web NodeBeginner, vous êtes tombé sur deux extraits de code distincts qui effectuent des requêtes de base de données . Bien que l'objectif soit clair, la différence entre la programmation synchrone et asynchrone reste insaisissable.
Programmation synchrone :
Dans le premier extrait de code :
var result = database.query("SELECT * FROM hugetable"); console.log("Hello World");
Ce code fonctionne de manière synchrone. Le programme s'arrête à la première ligne, en attendant la fin de la requête. Par conséquent, la ligne suivante, qui affiche « Hello World », ne peut s'exécuter qu'une fois la requête terminée.
Programmation asynchrone :
En revanche, le deuxième extrait de code :
database.query("SELECT * FROM hugetable", function(rows) { var result = rows; }); console.log("Hello World");
Utilise une programmation asynchrone. Ici, le message « Hello World » est imprimé immédiatement, tandis que l'exécution de la requête s'exécute simultanément. La fonction de rappel reçoit les résultats de la requête une fois terminée.
Différences clés :
La distinction critique réside dans le comportement de blocage du code synchrone. La programmation synchrone arrête l'exécution d'autres codes jusqu'à ce que la requête soit traitée, tandis que la programmation asynchrone permet l'exécution simultanée d'autres tâches en attendant les résultats de la requête.
Flux d'exécution :
Exécution du Tout d'abord, l'extrait de code synchrone entraînerait :
Query finished Next line
D'autre part, l'extrait de code asynchrone entraînerait sortie :
Next line Query finished
Illustrant la nature non bloquante de la programmation asynchrone.
Asynchronicité basée sur les événements dans Node.js :
Malgré le fait qu'elle soit monothread, Node.js permet des opérations asynchrones grâce à son architecture basée sur les événements. Les tâches telles que les opérations sur le système de fichiers sont gérées dans des processus distincts. Le thread principal du nœud reçoit des notifications sur ces opérations, lui permettant de répondre de manière appropriée sans bloquer l'exécution d'autres tâches.
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!