Wenn ein Promise fehlschlägt
Teil des Abschnitts Node.js-Grundlagen der Node.js-Journey von Coddy. Lektion 20 von 33.
Ein Promise kann auch fehlschlagen, zum Beispiel wenn eine Datei nicht existiert. Das nennt man Ablehnung. .catch stellt den Code bereit, der bei einem Fehler ausgeführt werden soll. .finally wird nach einem Erfolg oder einem Fehler ausgeführt, was für eine abschließende Meldung nützlich ist.
readFile('weather.txt', 'utf8')
.then((text) => console.log(text))
.catch(() => console.log('No file'))
.finally(() => console.log('Finished'));Wenn das Lesen fehlschlägt, wird der Erfolgs-Callback übersprungen. Das Beispiel gibt „No file“ und dann „Finished“ aus. Die Fehlermeldung gehört in catch, damit sie bei einem erfolgreichen Lesevorgang nicht ausgegeben wird.
Aufgabe
EinfachFühre zuerst practice.js aus: Die fehlende Datei verursacht einen nicht abgefangenen ENOENT-Fehler.
Behalte den Callback für erfolgreiches Lesen bei. Füge .catch hinzu, um bei einem Fehler No notes yet auszugeben, und anschließend .finally, um in beiden Fällen Done auszugeben. Ohne Argumente lauten die Zeilen No notes yet und Done. Probiere note.txt aus: Die Zeilen lauten Buy milk und Done.
Probier es selbst
import { readFile } from 'node:fs/promises';
readFile(process.argv[2] ?? 'missing.txt', 'utf8').then((text) => console.log(text));
Alle Lektionen in Node.js-Grundlagen
1JavaScript mit Node ausführen
Hallo, NodeDen Befehl lesenKommandozeilenargumenteBefehle4Asynchrones Node
Ein Callback-Ergebnis verwendenCallbacksEin Promise-ErgebnisWenn ein Promise fehlschlägtPromisesAuf einen Wert wartenAsync und AwaitZwei unabhängige LesevorgängePromise.allDer Event LoopTimerÜbe selbstständig: Express-Playground