Promesses
Fait partie de la section Les bases de Node.js du Journey Node.js de Coddy. Leçon 15 sur 24.
Les rappels imbriqués deviennent difficiles à suivre, et chacun doit penser à vérifier err.
node:fs/promises renvoie plutôt une promesse : un objet qui représente un résultat qui arrive plus tard. .then(fn) s’exécute avec le résultat, .catch(fn) s’exécute si une étape précédente a échoué, et .finally(fn) s’exécute dans tous les cas.
import { readFile } from 'node:fs/promises';
readFile('poem.txt', 'utf8')
.then((text) => console.log(text.length + ' characters'))
.catch(() => console.log('No poem today'))
.finally(() => console.log('Bye'));Une erreur levée à l’intérieur de .then est également transmise à .catch, de sorte qu’un seul gestionnaire couvre la lecture et l’analyse. Une promesse qui échoue sans .catch fait planter le programme.
Défi
Facile- Réécris
count.jsavecreadFiledenode:fs/promiseset.then. - Un fichier manquant affiche maintenant
No notes yet, grâce à.catch. Donereste le dernier message, grâce à.finally.
Exécute node count.js, puis node count.js nothere.json.
Essayez vous-même
import fs from 'node:fs';
const file = process.argv[2] ?? 'notes.json';
console.log('Reading...');
fs.readFile(file, 'utf8', (err, text) => {
if (err) {
console.log(`Cannot read ${file}`);
} else {
console.log(`${JSON.parse(text).length} notes`);
}
console.log('Done');
});
Toutes les leçons de Les bases de Node.js
1Exécuter JavaScript avec Node
Bonjour, NodeArguments de ligne de commandeCommandes4Node asynchrone
Fonctions de rappelPromesses