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, lecture d'un fichier volumineux ou interrogation d'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 ne soit pas bloquant et que votre application reste réactive.
Merci d'avoir lu et bon codage ! ?
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3