Promesas
Parte de la sección Conceptos básicos de Node.js del Journey de Node.js de Coddy. Lección 15 de 24.
Los callbacks dentro de otros callbacks son difíciles de seguir, y cada uno debe recordar comprobar err.
node:fs/promises devuelve una promesa: un objeto que representa un resultado que llega más tarde. .then(fn) se ejecuta con el resultado, .catch(fn) se ejecuta si algún paso anterior falló y .finally(fn) se ejecuta en cualquier caso.
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'));Un error lanzado dentro de .then también llega a .catch, así que un solo manejador cubre la lectura y el análisis. Una promesa que falla sin .catch hace que el programa se bloquee.
Desafío
Fácil- Reescribe
count.jsconreadFiledenode:fs/promisesy.then. - Ahora, si falta un archivo, se imprime
No notes yetdesde un.catch. Donesigue apareciendo al final, desde.finally.
Ejecuta node count.js y después node count.js nothere.json.
Pruébalo tú mismo
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');
});
Todas las lecciones de Conceptos básicos de Node.js
1Ejecutar JavaScript en Node
Hola, NodeArgumentos de la línea de comandosComandos