Olay Yayıcıları
Coddy'nin Node.js Journey'sinin Node.js Temelleri bölümünün bir parçası. Ders 20 / 24.
Mağaza, notu kimin duymak istediğini bilmeden not eklendiğini duyurmalıdır.
node:events içindeki bir EventEmitter, her olay adı için dinleyicilerin listesini tutar. on(name, fn) bir dinleyici ekler; emit(name, ...args) o adla kayıtlı tüm dinleyicileri bu argümanlarla hemen çağırır. Emit işleminden sonra eklenen bir dinleyici hiçbir şey duymaz.
import { EventEmitter } from 'node:events';
const door = new EventEmitter();
door.on('open', (who) => console.log(`${who} came in`));
door.on('open', () => console.log('Ding!'));
door.emit('open', 'Ada');
// Ada içeri girdi, ardından Ding!Mevcut bir nesneyi yayıcıya dönüştürmek için yöntemlerini bir yayıcıya kopyalayın: Object.assign(new EventEmitter(), { ... }).
Görev
Kolaystoreöğesini, kaydettikten sonra notun metnini ve numarasınıaddedile yayan bir yayıcı hâline getirin.notes.js,addedolayını dinler ve dinleyicidenSaved note 4.çıktısını verir.
node notes.js add Buy bread komutunu çalıştırın. Ardından clear komutunu çalıştırıp iki not ekleyerek numaraların yeniden başladığını görün.
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);
}
};
const [notes, settings] = await Promise.all([readJson(file, []), readJson('settings.json', {})]);
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;
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Node.js Temelleri bölümündeki tüm dersler
1JavaScript'ı Node Üzerinde Çalıştırma
Merhaba, NodeKomut Satırı ArgümanlarıKomutlar