Promise.all
Coddy'nin Node.js Journey'sinin Node.js Temelleri bölümünün bir parçası. Ders 25 / 33.
Bağımsız okumalar tek bir sonucun farklı bölümlerini sağlayabilir. Her iki işlemi de başlatın, sonuçlarını bekleyin, ardından her sonucu kendi amacı için kullanın.
const [forecast, location] = await Promise.all([
readFile('forecast.txt', 'utf8'),
readFile('location.txt', 'utf8'),
]);
console.log(location + ': ' + forecast);İkinci okuma önce tamamlansa bile sonuçların sırası giriş dizisini izler. Notlar aracınız bunun yerine notları ve bir görüntüleme ayarını okur. Hazırlanmış readJson yardımcısı eksik ve bozuk dosyaları işler. Not numaralarını, görüntüleme satırlarını tersine çevirmeden önce biçimlendirin; böylece görünümü değiştirmek, bir numaranın hangi notu belirlediğini asla değiştirmez.
Görev
KolayBu adım, Async and Await dersindeki kendi proje dosyaların (store.js dâhil) yerine, kurs için hazırlanmış notlar komut satırı aracı projesini açar. Önceki çalışmaların kendi dersinde kalır. store.js dosyasını düzenlemeden önce sağlanan dosyaları oku. Bu kopya, not komutlarını, JSON okuyucusunu ve yapılandırma dosyasını içerir.
Notlar aracı artık hem notes.json hem de settings.json dosyalarına ihtiyaç duyuyor. Sağlanan readJson(name, fallback) yardımcı işlevi, mevcut dosya hatası işleme davranışını korur.
store.jsdosyasında, boş yer tutucuları her iki dosyanın daPromise.allile birlikte okunmasıyla elde edilen sonuçlarla değiştir. Olmayan bir notlar dosyası için[]; olmayan ayarlar için{}kullanılır.notes.jsdosyasında,listdalı zaten numaralandırılmış satırlar oluşturuyor.store.settings.sortdeğerinewestolduğunda, yazdırmadan önce bu satırları tersine çevir. Diğer tüm ayarlarda özgün sıralama korunur.
list komutunu dene: Notes for you satırından sonra 2. Call Ada, 1. Buy milk çıktısını bekle. Ayarı oldest olarak değiştirip yeniden dene: aynı numaralar artan sırada görünür. Kontrol etmeden önce newest ayarını geri yükle.
Kendin dene
import { existsSync } from 'node:fs';
import { readFile, writeFile } from 'node:fs/promises';
const file = 'notes.json';
const readJson = async (name, fallback) => {
if (!existsSync(name)) {
return fallback;
}
try {
return JSON.parse(await readFile(name, 'utf8'));
} catch (err) {
console.error(`${name} is damaged: ${err.message}`);
process.exit(1);
}
};
// Bu yer tutucuları iki readJson sonucuyla değiştirin.
const notes = [];
const settings = {};
const store = {
notes,
settings,
async save() {
await writeFile(file, JSON.stringify(this.notes, null, 2));
},
async add(text) {
this.notes.push(text);
await this.save();
return this.notes.length;
},
async remove(n) {
const [text] = this.notes.splice(n - 1, 1);
await this.save();
return text;
},
};
export default store;
Node.js Temelleri bölümündeki tüm dersler
1JavaScript’i Node Üzerinde Çalıştırma
Merhaba, NodeKomutu OkumaKomut Satırı ArgümanlarıKomutlarKendi başına pratik yap: Express playground