Menu
CoddyTech

Callback

Fa parte della sezione Fondamenti di Node.js del percorso Node.js di Coddy. Lezione 18 di 33.

Leggere un file di grandi dimensioni richiede tempo e, nel frattempo, un programma che resta in attesa non fa nient'altro.

fs.readFile(path, 'utf8', callback) avvia la lettura e restituisce subito. Quando il file è caricato, Node chiama la tua callback con (err, text). err è null in caso di successo e contiene un errore altrimenti, quindi controllalo per prima cosa. Tutto ciò che ha bisogno del testo va inserito nella callback.

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 viene stampato per primo: la riga dopo readFile viene eseguita mentre il file è ancora in caricamento.

challenge icon

Sfida

Facile

Questa lezione apre un nuovo esempio di conteggio con callback in count.js, anziché usare i file del tuo strumento per le note della lezione Gestione degli errori. Sono inclusi i file forniti notes.json, notes.js e store.js; il lavoro svolto in precedenza resta salvato nella sua lezione.

Leggere un file di grandi dimensioni richiede tempo. Con una callback, Node può svolgere altre attività nel frattempo e richiama il tuo codice quando il file è pronto. Esercitati con questo in un piccolo programma separato, count.js, che conta le note in un file.

  1. count.js stampa già Reading... e sa quale file leggere: file è la parola digitata dopo node count.js, oppure notes.json se non viene digitato nulla.
  2. Leggi quel file con fs.readFile e una callback. Tutto ciò che segue avviene all'interno della callback.
  3. Se la lettura è riuscita, trasforma il testo in un array con JSON.parse. Stampa quante note contiene l'array, seguite da notes. Conta le note nell'array, non le righe del file. notes.json inizia con due note, quindi stampa 2 notes.
  4. Se la lettura non è riuscita, cioè se l'errore della callback non è null, stampa Cannot read seguito dal nome del file invece del conteggio.
  5. In entrambi i casi, stampa Done per ultimo, sempre dall'interno della callback.

node count.js stampa:

Reading...
2 notes
Done

node count.js nothere.json stampa:

Reading...
Cannot read nothere.json
Done

Prova: questa lezione esegue count.js, quindi il terminale mostra $ node count.js. Premi Run con la casella vuota e il programma legge notes.json. Poi digita nothere.json nella casella e premi Invio per leggere un file che non esiste.

Provalo tu

import fs from 'node:fs';

const file = process.argv[2] ?? 'notes.json';

console.log('Reading...');
// Leggi il file con fs.readFile e una funzione di callback.
// Stampa il numero di note, poi Done.
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti di Node.js

Esercitati da solo: Playground Express