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.
Aufgabe
EinfachDies 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
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