Performance: Custom event emitter classes
MEDIUM IMPACT
This concept affects how efficiently events are handled and propagated in a Node.js application, impacting responsiveness and CPU usage.
const { EventEmitter } = require('events');
class GoodEmitter extends EventEmitter {
// Inherits optimized event handling from Node.js core
}
const emitter = new GoodEmitter();
emitter.on('event', async (data) => {
// handle event asynchronously
});class BadEmitter { constructor() { this.listeners = {}; } on(event, listener) { if (!this.listeners[event]) { this.listeners[event] = []; } this.listeners[event].push(listener); } emit(event, ...args) { if (this.listeners[event]) { this.listeners[event].forEach(listener => { listener(...args); }); } } }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Custom synchronous event emitter | N/A | N/A | N/A | [X] Bad |
| Node.js built-in EventEmitter with async listeners | N/A | N/A | N/A | [OK] Good |