Menu
CoddyTech

Zwei unabhängige Lesevorgänge

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

Zwei Lesevorgänge können gleichzeitig starten, wenn keiner das Ergebnis des anderen benötigt. Promise.all nimmt ihre Promises entgegen und gibt ein einzelnes Promise für ein Array mit Ergebnissen zurück. Warte einmal auf dieses Array.

const [name, city] = await Promise.all([
    readFile('name.txt', 'utf8'),
    readFile('city.txt', 'utf8'),
]);

Das erste Ergebnis gehört zum ersten Promise, selbst wenn der zweite Lesevorgang früher abgeschlossen ist. Die eckigen Klammern weisen die beiden Ergebnisse separaten Variablen zu. Wenn einer der beiden Lesevorgänge fehlschlägt, wird das kombinierte Promise zurückgewiesen. Verwende separate await-Ausdrücke, wenn ein Vorgang das vorherige Ergebnis benötigt.

Der bereitgestellte Übungs-Reader verweigert einen Lesevorgang, wenn darauf gewartet wird, bevor der andere gestartet wurde. Dadurch wird zu frühes Warten sichtbar; die Ausführungsgeschwindigkeit wird nicht gemessen.

challenge icon

Aufgabe

Einfach

Dies ist ein kleines Übungsprojekt. Die Einrichtung wird bereitgestellt; bearbeite nur practice.js.

Lies note.txt und owner.txt mit Promise.all. Verwende die Ergebnisse, um Ada: Buy milk auszugeben. Lass note im Eingabearray an erster Stelle. „Spielen“ führt node practice.js aus.

Verwende den importierten Reader. Starte beide Lesevorgänge, bevor du wartest; sequenzielle await-Aufrufe werden von diesem Übungs-Reader absichtlich abgelehnt.

Verwende die bereitgestellten Werte noteFile und ownerFile. Führe das Programm mit other-note.txt other-owner.txt aus: Erwartet wird Bo: Walk.

Probier es selbst

import { readFile } from './reader.js';
const [noteFile = 'note.txt', ownerFile = 'owner.txt'] = process.argv.slice(2);
const note = '';
const owner = '';
console.log(owner + ': ' + note);

Alle Lektionen in Node.js-Grundlagen

Übe selbstständig: Express-Playground