Funkcje zwrotne
Część sekcji Podstawy Node.js ścieżki Node.js w Coddy. Lekcja 18 z 33.
Odczytanie dużego pliku zajmuje czas, a program, który czeka na niego, w międzyczasie nic innego nie robi.
fs.readFile(path, 'utf8', callback) rozpoczyna odczyt i natychmiast zwraca sterowanie. Gdy plik zostanie wczytany, Node wywoła twoją funkcję zwrotną z argumentami (err, text). err ma wartość null w przypadku powodzenia, a w przeciwnym razie zawiera błąd, więc najpierw to sprawdź. Wszystko, co wymaga tekstu, umieść wewnątrz funkcji zwrotnej.
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 zostanie wyświetlone jako pierwsze: wiersz po readFile wykonuje się, gdy plik jest jeszcze wczytywany.
Wyzwanie
ŁatwyTa lekcja przedstawia nowy przykład zliczania za pomocą funkcji zwrotnej w pliku count.js, zamiast plików narzędzia do notatek z lekcji Obsługa błędów. Dołączono pliki notes.json, notes.js i store.js; Twoja wcześniejsza praca pozostaje zapisana w swojej lekcji.
Odczyt dużego pliku zajmuje czas. Dzięki funkcji zwrotnej Node może w międzyczasie wykonywać inne zadania i wywoła Twój kod, gdy plik będzie gotowy. Przećwicz to w małym, osobnym programie count.js, który zlicza notatki w pliku.
count.jsjuż wyświetlaReading...i wie, który plik odczytać:fileto słowo wpisane ponode count.jsalbonotes.json, jeśli nic nie wpisano.- Odczytaj ten plik za pomocą
fs.readFilei funkcji zwrotnej. Wszystko poniżej dzieje się wewnątrz funkcji zwrotnej. - Jeśli odczyt się powiedzie, zamień tekst na tablicę za pomocą
JSON.parse. Wyświetl, ile notatek zawiera tablica, a następnienotes. Zlicz notatki w tablicy, a nie wiersze pliku. Pliknotes.jsonzaczyna się od dwóch notatek, więc wyświetlisz2 notes. - Jeśli odczyt się nie powiedzie, czyli błąd funkcji zwrotnej nie jest równy
null, wyświetlCannot read, a następnie nazwę pliku zamiast liczby. - W obu przypadkach wyświetl na końcu
Done, również wewnątrz funkcji zwrotnej.
node count.js wyświetla:
Reading...
2 notes
Donenode count.js nothere.json wyświetla:
Reading...
Cannot read nothere.json
DoneWypróbuj: ta lekcja uruchamia count.js, więc terminal pokazuje $ node count.js. Naciśnij „Uruchom”, gdy pole jest puste, a program odczyta notes.json. Następnie wpisz nothere.json w polu i naciśnij Enter, aby odczytać plik, który nie istnieje.
Spróbuj swoich sił
import fs from 'node:fs';
const file = process.argv[2] ?? 'notes.json';
console.log('Reading...');
// Odczytaj plik za pomocą fs.readFile i funkcji zwrotnej.
// Wypisz liczbę notatek, a następnie Done.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy Node.js
1Uruchamianie JavaScript w Node
Witaj, NodeOdczytywanie poleceniaArgumenty wiersza poleceńPolecenia5Zdarzenia, dane wejściowe i pakiety
Nasłuchuj przed emisjąEmitery zdarzeńOdczytywanie danych wejściowychPoćwicz samodzielnie: Edytor online Express