Due letture indipendenti
Fa parte della sezione Fondamenti di Node.js del percorso Node.js di Coddy. Lezione 24 di 33.
Due letture possono iniziare contemporaneamente quando nessuna delle due ha bisogno del risultato dell'altra. Promise.all prende le loro promise e restituisce una promise per un array di risultati. Applica await a quell'array una sola volta.
const [name, city] = await Promise.all([
readFile('name.txt', 'utf8'),
readFile('city.txt', 'utf8'),
]);Il primo risultato corrisponde alla prima promise, anche se la seconda lettura termina prima. Le parentesi quadre assegnano i due risultati a variabili separate. Se una delle due letture non riesce, la promise combinata viene rifiutata. Usa await separati quando un'operazione ha bisogno del risultato della precedente.
Il lettore di esercitazione fornito rifiuta una lettura se si usa await prima che sia iniziata l'altra. Rende evidente l'attesa troppo precoce; non misura la velocità di esecuzione.
Sfida
FacileQuesto è un piccolo progetto di esercitazione. La configurazione è già fornita; modifica solo practice.js.
Leggi note.txt e owner.txt con Promise.all. Usa i risultati per stampare Ada: Buy milk. Mantieni note per primo nell’array di input. Esegui node practice.js.
Usa il reader importato. Avvia entrambe le letture prima di attendere; questo reader di esercitazione rifiuta deliberatamente gli await sequenziali.
Usa i valori noteFile e ownerFile forniti. Esegui con other-note.txt other-owner.txt: il risultato atteso è Bo: Walk.
Provalo tu
import { readFile } from './reader.js';
const [noteFile = 'note.txt', ownerFile = 'owner.txt'] = process.argv.slice(2);
const note = '';
const owner = '';
console.log(owner + ': ' + note);
Tutte le lezioni di Fondamenti di Node.js
Esercitati da solo: Playground Express