Menu
CoddyTech

Dwa niezależne odczyty

Część sekcji Podstawy Node.js ścieżki Node.js w Coddy. Lekcja 24 z 33.

Dwa odczyty mogą rozpocząć się jednocześnie, gdy żaden z nich nie wymaga wyniku drugiego. Promise.all przyjmuje ich obietnice i zwraca jedną obietnicę dla tablicy wyników. Poczekaj na tę tablicę tylko raz.

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

Pierwszy wynik odpowiada pierwszej obietnicy, nawet jeśli drugi odczyt zakończy się wcześniej. Nawiasy kwadratowe przypisują oba wyniki do osobnych zmiennych. Jeśli którykolwiek odczyt się nie powiedzie, łączna obietnica zostanie odrzucona. Używaj osobnych instrukcji await, gdy jedna operacja wymaga wyniku poprzedniej.

Dostarczony czytnik do ćwiczeń odmawia odczytu, na który czeka się przed rozpoczęciem drugiego odczytu. Dzięki temu widać, że czekanie rozpoczęło się zbyt wcześnie; czytnik nie mierzy szybkości wykonywania.

challenge icon

Wyzwanie

Łatwy

To mały projekt ćwiczeniowy. Konfiguracja jest gotowa; edytuj tylko practice.js.

Odczytaj note.txt i owner.txt za pomocą Promise.all. Użyj wyników, aby wypisać Ada: Buy milk. Umieść note jako pierwszy element tablicy wejściowej. Uruchomienie wykonuje node practice.js.

Użyj zaimportowanego czytnika. Rozpocznij oba odczyty przed oczekiwaniem; ten czytnik ćwiczeniowy celowo odrzuca sekwencyjne użycie await.

Użyj podanych wartości noteFile i ownerFile. Uruchom z argumentami other-note.txt other-owner.txt: oczekiwany wynik to Bo: Walk.

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Podstawy Node.js

Poćwicz samodzielnie: Edytor online Express