Maison > interface Web > js tutoriel > le corps du texte

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

DDD
Libérer: 2024-09-20 18:46:02
original
755 Les gens l'ont consulté

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, 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);
Copier après la connexion
  • 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!');
Copier après la connexion
  • 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 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();
Copier après la connexion

Résumé

  • Les Les rappels sont simples mais peuvent conduire à un enfer de rappel.
  • Promesses nettoie l'enfer des rappels et offre 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 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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal