Dua Pembacaan Independen
Termasuk bagian Dasar-Dasar Node.js dalam perjalanan Node.js di Coddy. Pelajaran 24 dari 33.
Dua pembacaan dapat dimulai bersamaan saat keduanya tidak membutuhkan hasil satu sama lain. Promise.all menerima promise keduanya dan mengembalikan satu promise untuk array hasil. Tunggu array itu sekali.
const [name, city] = await Promise.all([
readFile('name.txt', 'utf8'),
readFile('city.txt', 'utf8'),
]);Hasil pertama berasal dari promise pertama, meskipun pembacaan kedua selesai lebih cepat. Tanda kurung siku menetapkan kedua hasil ke variabel yang terpisah. Jika salah satu pembacaan gagal, promise gabungan akan ditolak. Gunakan await terpisah saat satu operasi membutuhkan hasil operasi sebelumnya.
Pembaca latihan yang disediakan menolak pembacaan yang ditunggu sebelum pembacaan lainnya dimulai. Ini membuat menunggu terlalu awal terlihat, bukan mengukur kecepatan eksekusi.
Tantangan
MudahIni proyek latihan kecil. Penyiapannya sudah disediakan, edit hanya practice.js.
Baca note.txt dan owner.txt dengan Promise.all. Gunakan hasilnya untuk mencetak Ada: Buy milk. Letakkan note terlebih dahulu di input array. Jalankan node practice.js.
Gunakan reader yang diimpor. Mulai kedua pembacaan sebelum menunggu, await berurutan sengaja ditolak oleh reader latihan ini.
Gunakan nilai noteFile dan ownerFile yang disediakan. Jalankan dengan other-note.txt other-owner.txt: hasilnya diharapkan Bo: Walk.
Coba sendiri
import { readFile } from './reader.js';
const [noteFile = 'note.txt', ownerFile = 'owner.txt'] = process.argv.slice(2);
const note = '';
const owner = '';
console.log(owner + ': ' + note);
Semua pelajaran di Dasar-Dasar Node.js
1Menjalankan JavaScript di Node
Halo, NodeMembaca PerintahArgumen Baris PerintahPerintah4Node Asinkron
Menggunakan Hasil CallbackCallbackHasil PromiseSaat Promise GagalPromiseMenunggu NilaiAsync dan AwaitDua Pembacaan IndependenPromise.allEvent LoopTimer5Peristiwa, Input, dan Paket
Mendengarkan Sebelum MemancarkanPemancar PeristiwaMembaca InputLatihan sendiri: Playground Express