Promise
Część sekcji Podstawy Node.js ścieżki Node.js w Coddy. Lekcja 21 z 33.
Wywołania zwrotne zagnieżdżone w innych wywołaniach zwrotnych trudno śledzić, a każde z nich musi pamiętać o sprawdzeniu err.
node:fs/promises zamiast tego zwraca obietnicę: obiekt reprezentujący wynik, który pojawi się później. .then(fn) uruchamia się z wynikiem, .catch(fn) uruchamia się, jeśli którykolwiek wcześniejszy krok zakończył się niepowodzeniem, a .finally(fn) uruchamia się niezależnie od wyniku.
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'));Błąd zgłoszony wewnątrz .then również trafia do .catch, więc jeden obsługiwany wyjątek obejmuje zarówno odczyt, jak i analizowanie. Obietnica, która kończy się niepowodzeniem bez .catch, powoduje awarię programu.
Wyzwanie
ŁatwyTen krok otwiera przygotowany w kursie projekt narzędzia wiersza poleceń do obsługi notatek, a nie pliki projektu z lekcji Callbacks (w tym count.js). Twoja wcześniejsza praca pozostaje w osobnej lekcji. Przed edycją count.js przeczytaj dostarczone pliki. Ta kopia zawiera przykład asynchronicznego zliczania notatek.
- Przepisz
count.js, używającreadFileznode:fs/promisesi.then. - Brakujący plik powoduje teraz wyświetlenie
No notes yetprzez.catch. Donenadal pojawia się na końcu, dzięki.finally.
Uruchom node count.js, a następnie node count.js nothere.json.
Bez argumentu wynikiem są kolejno Reading..., 2 notes, a następnie Done, każdy w osobnym wierszu. W przypadku nothere.json środkowy wiersz to No notes yet.
Spróbuj swoich sił
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');
});
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