Promise
Fa parte della sezione Fondamenti di Node.js del percorso Node.js di Coddy. Lezione 15 di 24.
Le callback annidate diventano difficili da seguire e ognuna deve ricordarsi di controllare err.
node:fs/promises restituisce invece una promise: un oggetto che rappresenta un risultato che arriverà in seguito. .then(fn) viene eseguito con il risultato, .catch(fn) viene eseguito se un qualsiasi passaggio precedente non è riuscito e .finally(fn) viene eseguito in entrambi i casi.
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'));Anche un errore generato all'interno di .then finisce in .catch, quindi un solo gestore copre sia la lettura sia l'analisi. Una promise che fallisce senza .catch provoca l'arresto del programma.
Sfida
Facile- Riscrivi
count.jsconreadFiledanode:fs/promisese.then. - Se il file manca, ora viene stampato
No notes yetda un.catch. Doneviene comunque stampato per ultimo, da.finally.
Esegui node count.js, poi node count.js nothere.json.
Provalo tu
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');
});
Tutte le lezioni di Fondamenti di Node.js
1Eseguire JavaScript con Node
Ciao, NodeArgomenti della riga di comandoComandi