Émetteurs d’événements
Fait partie de la section Les bases de Node.js du Journey Node.js de Coddy. Leçon 20 sur 24.
Le magasin doit annoncer qu’une note a été ajoutée sans savoir qui souhaite l’entendre.
Un EventEmitter de node:events conserve une liste d’écouteurs pour chaque nom d’événement. on(name, fn) ajoute un écouteur ; emit(name, ...args) appelle immédiatement chaque écouteur associé à ce nom, avec ces arguments. Un écouteur ajouté après l’émission ne reçoit rien.
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 est entrée, puis Ding!Pour transformer un objet existant en émetteur, copiez ses méthodes sur un nouvel objet : Object.assign(new EventEmitter(), { ... }).
Défi
Facile- Fais de
storeun émetteur qui émetaddedavec le texte et le numéro de la note après l’enregistrement. notes.jsécouteaddedet afficheSaved note 4.depuis l’écouteur.
Exécute node notes.js add Buy bread. Puis utilise clear et ajoute deux notes pour voir les numéros recommencer.
Essayez vous-même
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;
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les bases de Node.js
1Exécuter JavaScript avec Node
Bonjour, NodeArguments de ligne de commandeCommandes