Node.js fonctionne sur une architecture événementielle à thread unique, ce qui signifie qu'il peut gérer de nombreuses opérations simultanément sans bloquer le thread principal. Ceci est crucial pour créer des applications évolutives où des tâches telles que les opérations d'E/S (lecture de fichiers, interrogation de bases de données, etc.) doivent s'effectuer de manière asynchrone pour éviter de bloquer l'exécution d'autres codes.
Le code synchrone exécute une étape à la fois, ce qui signifie que chaque étape doit être terminée avant de passer à la suivante. Cela peut bloquer le thread principal si les opérations sont lentes (par exemple, lire un fichier volumineux ou interroger une base de données).
Exemple (Code synchrone) :
const fs = require('fs'); const data = fs.readFileSync('file.txt', 'utf8'); console.log(data);
Le code asynchrone, en revanche, ne bloque pas le thread principal. Au lieu d'attendre la fin d'une opération, le programme continue de s'exécuter et gère le résultat de l'opération asynchrone lorsqu'il est prêt.
Exemple (Code asynchrone) :
const fs = require('fs'); // Call Back fs.readFile('file.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); }); console.log('This will log before the file content!');
Async/Attendre
Introduit dans ES2017 (Node.js 7.6+), async/await est un sucre syntaxique construit sur des promesses. Il permet d'écrire du code asynchrone de manière synchrone, ce qui le rend plus lisible et plus facile à maintenir.
Exemple (Async/Await) :
const fs = require('fs').promises; async function readFile() { try { const data = await fs.readFile('file.txt', 'utf8'); console.log(data); } catch (err) { console.error(err); } } readFile();
Le choix du code asynchrone ou synchronisé dépend de votre cas d'utilisation. Pour les opérations gourmandes en E/S, préférez toujours les modèles asynchrones pour que le thread principal reste non bloquant et que votre application reste réactive.
Merci d'avoir lu et bon codage ! ?
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!