Menu
CoddyTech

Callbacks

Teil des Abschnitts Node.js-Grundlagen der Node.js-Journey von Coddy. Lektion 18 von 33.

Das Lesen einer großen Datei dauert eine Weile, und ein Programm, das darauf wartet, kann in der Zwischenzeit nichts anderes tun.

fs.readFile(path, 'utf8', callback) startet den Lesevorgang und kehrt sofort zurück. Wenn die Datei geladen ist, ruft Node deinen Callback mit (err, text) auf. Bei Erfolg ist err null, andernfalls enthält es einen Fehler; prüfe es also zuerst. Alles, was den Text benötigt, gehört in den 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 wird zuerst ausgegeben: Die Zeile nach readFile wird ausgeführt, während die Datei noch geladen wird.

challenge icon

Aufgabe

Einfach

In dieser Lektion wird ein neues Beispiel zum Zählen mit Callbacks in count.js geöffnet, statt deiner Dateien für das Notizwerkzeug aus Fehlerbehandlung. Die bereitgestellten Dateien notes.json, notes.js und store.js sind enthalten; deine frühere Arbeit bleibt in ihrer eigenen Lektion gespeichert.

Das Lesen einer großen Datei dauert. Mit einem Callback kann Node in der Zwischenzeit andere Aufgaben erledigen und ruft deinen Code auf, sobald die Datei bereit ist. Übe dies in einem kleinen separaten Programm, count.js, das die Notizen in einer Datei zählt.

  1. count.js gibt bereits Reading... aus und weiß, welche Datei gelesen werden soll: file ist das Wort, das nach node count.js eingegeben wird, oder notes.json, wenn nichts eingegeben wird.
  2. Lies diese Datei mit fs.readFile und einem Callback. Alles Folgende geschieht innerhalb des Callbacks.
  3. Wenn das Lesen erfolgreich war, wandle den Text mit JSON.parse in ein Array um. Gib aus, wie viele Notizen das Array enthält, gefolgt von notes. Zähle die Notizen im Array, nicht die Zeilen der Datei. notes.json beginnt mit zwei Notizen, also gibst du 2 notes aus.
  4. Wenn das Lesen fehlgeschlagen ist, das heißt, der Fehler des Callbacks nicht null ist, gib statt der Anzahl Cannot read gefolgt vom Dateinamen aus.
  5. Gib in beiden Fällen zuletzt Done aus, ebenfalls innerhalb des Callbacks.

node count.js gibt Folgendes aus:

Reading...
2 notes
Done

node count.js nothere.json gibt Folgendes aus:

Reading...
Cannot read nothere.json
Done

Probiere es aus: Diese Lektion führt count.js aus, daher zeigt das Terminal $ node count.js an. Drücke auf „Spielen“, wenn das Feld leer ist, und das Programm liest notes.json. Gib dann nothere.json in das Feld ein und drücke Enter, um eine Datei zu lesen, die nicht existiert.

Probier es selbst

import fs from 'node:fs';

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

console.log('Reading...');
// Lies die Datei mit fs.readFile und einer Callback-Funktion.
// Gib die Anzahl der Notizen aus, dann Done.
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Node.js-Grundlagen

Übe selbstständig: Express-Playground