Menu
CoddyTech

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.

challenge icon

Wyzwanie

Łatwy

Ta 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.

  1. count.js już wyświetla Reading... i wie, który plik odczytać: file to słowo wpisane po node count.js albo notes.json, jeśli nic nie wpisano.
  2. Odczytaj ten plik za pomocą fs.readFile i funkcji zwrotnej. Wszystko poniżej dzieje się wewnątrz funkcji zwrotnej.
  3. Jeśli odczyt się powiedzie, zamień tekst na tablicę za pomocą JSON.parse. Wyświetl, ile notatek zawiera tablica, a następnie notes. Zlicz notatki w tablicy, a nie wiersze pliku. Plik notes.json zaczyna się od dwóch notatek, więc wyświetlisz 2 notes.
  4. Jeśli odczyt się nie powiedzie, czyli błąd funkcji zwrotnej nie jest równy null, wyświetl Cannot read , a następnie nazwę pliku zamiast liczby.
  5. W obu przypadkach wyświetl na końcu Done, również wewnątrz funkcji zwrotnej.

node count.js wyświetla:

Reading...
2 notes
Done

node count.js nothere.json wyświetla:

Reading...
Cannot read nothere.json
Done

Wypró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.
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy Node.js

Poćwicz samodzielnie: Edytor online Express