Promises
Parte da seção Fundamentos de Node.js do Journey de Node.js da Coddy. Lição 15 de 24.
Callbacks dentro de callbacks são difíceis de acompanhar, e cada um precisa se lembrar de verificar err.
node:fs/promises retorna uma promise: um objeto que representa um resultado que chega mais tarde. .then(fn) é executado com o resultado, .catch(fn) é executado se alguma etapa anterior falhar, e .finally(fn) é executado de qualquer maneira.
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'));Um erro lançado dentro de .then também chega a .catch, então um único manipulador cobre a leitura e a análise. Uma promise que falha sem .catch encerra o programa com erro.
Desafio
Fácil- Reescreva
count.jsusandoreadFiledenode:fs/promisese.then. - Agora, um arquivo ausente exibe
No notes yet, a partir de um.catch. Doneainda aparece por último, a partir de.finally.
Execute node count.js e, em seguida, node count.js nothere.json.
Experimente você mesmo
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 as lições de Fundamentos de Node.js
1Executando JavaScript no Node
Olá, NodeArgumentos de linha de comandoComandos