Introduction
Once listeners let you run a function only one time when an event happens. This helps avoid running the same code many times by mistake.
Jump into concepts and practice - no test required
const EventEmitter = require('events'); const emitter = new EventEmitter(); emitter.once('eventName', listenerFunction);
const EventEmitter = require('events'); const emitter = new EventEmitter(); emitter.once('greet', () => { console.log('Hello once!'); }); emitter.emit('greet'); emitter.emit('greet');
const EventEmitter = require('events'); const emitter = new EventEmitter(); function onConnect() { console.log('Client connected once'); } emitter.once('connect', onConnect); emitter.emit('connect'); emitter.emit('connect');
const EventEmitter = require('events'); class Server extends EventEmitter { start() { console.log('Server starting...'); this.emit('start'); } } const server = new Server(); // Listen once for the 'start' event server.once('start', () => { console.log('Server has started - this runs only once'); }); // Emit 'start' event twice server.start(); server.start();
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.