Promise.all
Coddy'nin Node.js Journey'sinin Node.js Temelleri bölümünün bir parçası. Ders 17 / 24.
Mağaza artık iki dosyaya ihtiyaç duyuyor: notlar ve ayarlar; bunları art arda okumak iki kez beklemeye yol açar.
Promise.all([a, b]), iki promise'in de aynı anda çalışmasını sağlar ve ikisi de tamamlanana kadar bekler. Sonuçlarını dizideki sırayla döndürür ve içlerinden biri başarısız olur olmaz hata verir.
const [user, prefs] = await Promise.all([
readFile('user.json', 'utf8'),
readFile('prefs.json', 'utf8'),
]);Okumalar birbirine bağlı olmadığında bunu kullan. İkincisi ilkinin sonucuna ihtiyaç duyduğunda, her birini sırayla await et.
Görev
Kolaystore.js,notes.jsonvesettings.jsondosyalarını aynı andaPromise.allile okur. Olmayan bir ayar dosyası{}olarak kabul edilir.settings.jsoniçinde"sort": "newest"varsalist, en yeni notu ilk sırada yazdırır. Her not numarasını korur.
node notes.js list komutunu çalıştır. Ardından settings.json içinde newest değerini oldest olarak değiştir ve komutu yeniden çalıştır.
Kendin dene
import { existsSync } from 'node:fs';
import { readFile, writeFile } from 'node:fs/promises';
const file = 'notes.json';
const load = async () => {
if (!existsSync(file)) {
return [];
}
try {
return JSON.parse(await readFile(file, 'utf8'));
} catch (err) {
console.error(`notes.json is damaged: ${err.message}`);
process.exit(1);
}
};
const store = {
notes: await load(),
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'ı Node Üzerinde Çalıştırma
Merhaba, NodeKomut Satırı ArgümanlarıKomutlar