Callbacks
Fait partie de la section Les bases de Node.js du Journey Node.js de Coddy. Leçon 18 sur 33.
La lecture d’un gros fichier prend du temps, et un programme qui attend sans rien faire ne fait rien d’autre pendant ce temps.
fs.readFile(path, 'utf8', callback) lance la lecture et retourne aussitôt. Lorsque le fichier est chargé, Node appelle votre fonction de rappel avec (err, text). err vaut null en cas de réussite et contient une erreur dans le cas contraire ; vérifiez-le donc en premier. Tout ce qui a besoin du texte doit se trouver dans la fonction de rappel.
import fs from 'node:fs';
fs.readFile('poem.txt', 'utf8', (err, text) => {
if (err) {
console.log('No poem today');
return;
}
console.log(text.split('\n').length + ' lines');
});
console.log('Asked for the poem');Asked for the poem s’affiche en premier : la ligne qui suit readFile s’exécute pendant que le fichier est encore en cours de chargement.
Défi
FacileCette leçon ouvre un nouvel exemple de comptage avec callback dans count.js, plutôt que les fichiers de votre outil de notes de la leçon Gestion des erreurs. Les fichiers fournis notes.json, notes.js et store.js sont inclus ; votre travail précédent reste enregistré dans sa propre leçon.
Lire un gros fichier prend du temps. Avec un callback, Node peut faire autre chose entre-temps et rappeler votre code quand le fichier est prêt. Entraînez-vous avec un petit programme séparé, count.js, qui compte les notes d’un fichier.
count.jsaffiche déjàReading...et sait quel fichier lire :fileest le mot saisi aprèsnode count.js, ounotes.jsonsi rien n’est saisi.- Lisez ce fichier avec
fs.readFileet un callback. Tout ce qui suit se passe à l’intérieur du callback. - Si la lecture a réussi, transformez le texte en tableau avec
JSON.parse. Affichez le nombre de notes que contient le tableau, suivi denotes. Comptez les notes du tableau, pas les lignes du fichier.notes.jsoncontient deux notes au départ ; affichez donc2 notes. - Si la lecture a échoué, c’est-à-dire si l’erreur du callback n’est pas
null, affichezCannot readsuivi du nom du fichier au lieu du nombre. - Dans les deux cas, affichez
Doneen dernier, également depuis l’intérieur du callback.
node count.js affiche :
Reading...
2 notes
Donenode count.js nothere.json affiche :
Reading...
Cannot read nothere.json
DoneEssayez : cette leçon exécute count.js, donc le terminal affiche $ node count.js. Appuyez sur « Jouer » en laissant la zone vide : le programme lit alors notes.json. Ensuite, saisissez nothere.json dans la zone et appuyez sur Entrée pour lire un fichier qui n’existe pas.
Essayez vous-même
import fs from 'node:fs';
const file = process.argv[2] ?? 'notes.json';
console.log('Reading...');
// Lisez le fichier avec fs.readFile et une fonction de rappel.
// Affichez le nombre de notes, puis Done.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les bases de Node.js
1Exécuter JavaScript avec Node
Bonjour, NodeLire la commandeArguments de ligne de commandeCommandes5Événements, entrées et packages
Écouter avant d’émettreÉmetteurs d’événementsLire les entréesEntraînez-vous par vous-même : Playground Express