Performance: Once listeners
This affects event handling performance and memory usage by limiting listener calls to one execution.
Jump into concepts and practice - no test required
const EventEmitter = require('events'); const emitter = new EventEmitter(); emitter.once('data', () => { console.log('Data received once'); });
const EventEmitter = require('events'); const emitter = new EventEmitter(); emitter.on('data', () => { console.log('Data received'); });
| Pattern | Event Calls | Memory Usage | CPU Usage | Verdict |
|---|---|---|---|---|
| Persistent listener (on) | Multiple calls per event | Higher due to retained listeners | Higher due to repeated callbacks | [X] Bad |
| Once listener (once) | Single call per event | Lower due to auto-removal | Lower due to single callback | [OK] Good |
once listener in Node.js event handling?emitter for event 'start'?once, not on.() => { console.log('Started'); } is correct. Passing the result of console.log directly is wrong.const EventEmitter = require('events');
const emitter = new EventEmitter();
emitter.once('ping', () => console.log('Ping received'));
emitter.emit('ping');
emitter.emit('ping');emit('ping') call.emit('ping') triggers the listener and prints 'Ping received'. The second call finds no listener because it was removed after first run.const EventEmitter = require('events');
const emitter = new EventEmitter();
emitter.once('data', console.log('Data event'));
emitter.emit('data');console.log('Data event') which calls console.log immediately and passes its return (undefined) as listener.() => console.log('Data event'), to run only on event emit.server. Which code snippet correctly achieves this and prevents multiple logs if the user reconnects?server.once('connect', () => console.log('User connected')) uses the once method with a function callback, ensuring single log on first connect.