"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Modèles asynchrones dans Node.js - Tutoriel Node.js - Partie 6

Modèles asynchrones dans Node.js - Tutoriel Node.js - Partie 6

Publié le 2024-11-02
Parcourir:145

Async Patterns in Node.js - Node.js Tutorial - Part 6

Modèles asynchrones dans Node.js

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.

Écriture de code asynchrone ou de synchronisation

Code synchrone

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);
  • Problème : Si readFileSync prend beaucoup de temps (par exemple, le fichier est volumineux), l'ensemble de l'application sera bloqué pendant cette période.

Code asynchrone

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!');
  • Dans cet exemple, le fichier est lu de manière asynchrone et le programme ne bloque pas ; la ligne console.log('This will log before the file content!') s'exécute pendant que le fichier est encore en cours de lecture.

Quand utiliser synchrone ou asynchrone

  • Le code synchrone convient aux petites tâches ou aux scripts où les performances ne sont pas un problème.
  • Le code asynchrone est idéal pour les applications gourmandes en E/S telles que les serveurs Web, où vous ne souhaitez pas bloquer le thread principal en attendant des opérations telles que des requêtes de base de données ou des requêtes HTTP.

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();

Résumé

  • Les rappels sont simples mais peuvent conduire à un enfer de rappel.
  • Promesses nettoient l'enfer des rappels et offrent une meilleure gestion des erreurs.
  • Async/Await donne au code asynchrone un aspect synchrone, améliorant ainsi la lisibilité.

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 ! ?

Déclaration de sortie Cet article est reproduit sur : https://dev.to/hakimmohamed/async-patterns-in-nodejs-1e10?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

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