Skip to content

Asynchronicité de NodeJS

La notion d'asynchronicité est au cœur du fonctionnement de Node.js. Elle permet à Node.js de gérer de nombreuses opérations simultanément sans avoir à attendre qu'une opération se termine avant de passer à la suivante.

Lorsqu'on parle d'asynchronicité, cela signifie qu'une tâche peut être démarrée sans attendre sa conclusion pour poursuivre le reste du programme. Au lieu de cela, une fois la tâche terminée, une fonction (généralement appelée "callback" ou fonction de rappel) est invoquée pour gérer le résultat ou l'erreur de cette tâche.

Comment ça marche ?

Dans Node.js, cette asynchronicité est principalement utilisée pour les opérations d'entrée/sortie (I/O) qui peuvent prendre du temps, comme lire un fichier, interroger une base de données ou faire une requête réseau.

Par exemple, lors de la lecture d'un fichier en Node.js, au lieu de bloquer tout le programme pour attendre que la lecture soit terminée (ce qui serait synchrone), Node.js démarre la lecture du fichier et poursuit l'exécution du code suivant (asynchrone). Une fois la lecture du fichier terminée, une fonction de rappel est appelée avec les données du fichier ou une erreur si une erreur s'est produite.

Exemple : Lecture Asynchrone d'un Fichier avec Node.js

javascript
import fs from 'fs'

// Lecture asynchrone du fichier
fs.readFile('monFichier.txt', 'utf8', (err, data) => {
    if (err) {
        console.error('Erreur lors de la lecture du fichier:', err);
        return;
    }
    console.log('Contenu du fichier:', data);
});

console.log('Lecture du fichier en cours...');
import fs from 'fs'

// Lecture asynchrone du fichier
fs.readFile('monFichier.txt', 'utf8', (err, data) => {
    if (err) {
        console.error('Erreur lors de la lecture du fichier:', err);
        return;
    }
    console.log('Contenu du fichier:', data);
});

console.log('Lecture du fichier en cours...');

Lorsque vous exécutez ce script, vous verrez d'abord le message "Lecture du fichier en cours...", même si cette ligne est après l'appel à fs.readFile(). C'est parce que la lecture est asynchrone : Node.js ne l'attend pas pour continuer. Une fois la lecture terminée, le contenu du fichier est affiché ou une erreur est affichée si une erreur s'est produite.

Pourquoi l'asynchronicité est-elle importante ?

L'approche asynchrone de Node.js lui permet de gérer un grand nombre de connexions et d'opérations simultanément avec une seule boucle d'événements, sans avoir besoin de créer de nombreux threads, comme c'est le cas dans les environnements multi-thread. Cela le rend particulièrement efficace pour les applications qui nécessitent beaucoup d'opérations d'entrée/sortie (I/O) légères, comme les serveurs web.

Toutefois, il est crucial de bien comprendre l'asynchronicité lors de la programmation avec Node.js, car cela affecte la manière dont le code est structuré, en particulier l'ordre dans lequel les instructions sont exécutées.