Bird
Raised Fist0
Node.jsframework~5 mins

Once listeners in Node.js - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a 'once' listener in Node.js EventEmitter?
A 'once' listener is an event handler that runs only one time when the event is emitted, then it automatically removes itself.
Click to reveal answer
beginner
How do you add a 'once' listener to an event in Node.js?
Use the once method on an EventEmitter instance, like emitter.once('eventName', callback).
Click to reveal answer
intermediate
Why use a 'once' listener instead of a regular listener?
To handle an event only the first time it happens, avoiding repeated calls and automatically cleaning up the listener.
Click to reveal answer
beginner
What happens if you emit an event multiple times but have a 'once' listener attached?
The 'once' listener runs only on the first emit. Subsequent emits do not trigger it because it removes itself after the first call.
Click to reveal answer
intermediate
Can you remove a 'once' listener before it fires? How?
Yes, by using emitter.off('eventName', listenerFunction) or emitter.removeListener('eventName', listenerFunction) before the event is emitted.
Click to reveal answer
Which method adds a listener that runs only once in Node.js EventEmitter?
AaddListener()
Bonce()
Con()
Demit()
What happens to a 'once' listener after it is triggered?
AIt is removed automatically
BIt stays active for future events
CIt throws an error
DIt duplicates itself
How can you remove a 'once' listener before it fires?
AUse emitter.emit()
BYou cannot remove it
CUse emitter.off() or emitter.removeListener() with the listener function
DUse emitter.once() again
If an event is emitted three times but has a 'once' listener, how many times does the listener run?
A1 time
B2 times
C3 times
D0 times
Which of these is NOT true about 'once' listeners?
AThey run only once
BThey automatically remove themselves
CThey can be removed before firing
DThey can be reused multiple times without re-adding
Explain what a 'once' listener is and why you might use it in a Node.js application.
Think about events you want to handle only the first time they happen.
You got /4 concepts.
    Describe how to add and remove a 'once' listener on an EventEmitter instance.
    Focus on the methods and parameters involved.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main behavior of a once listener in Node.js event handling?
      easy
      A. It runs twice before removing itself automatically.
      B. It runs only the first time the event is emitted and then removes itself.
      C. It runs every time the event is emitted without removing itself.
      D. It never runs automatically and must be triggered manually.

      Solution

      1. Step 1: Understand the purpose of once listeners

        Once listeners are designed to handle an event only once, meaning they execute their callback a single time.
      2. Step 2: Recognize automatic removal behavior

        After running once, the listener removes itself automatically to prevent further executions.
      3. Final Answer:

        It runs only the first time the event is emitted and then removes itself. -> Option B
      4. Quick Check:

        Once listener = runs once then removes [OK]
      Hint: Once listeners run once then auto-remove themselves [OK]
      Common Mistakes:
      • Thinking once listeners run multiple times
      • Confusing once with on listeners
      • Assuming manual removal is needed
      2. Which of the following is the correct syntax to add a once listener to an EventEmitter instance emitter for event 'start'?
      easy
      A. emitter.once('start', () => { console.log('Started'); });
      B. emitter.on('start', () => { console.log('Started'); });
      C. emitter.once('start', console.log('Started'));
      D. emitter.once('start', function console.log('Started'));

      Solution

      1. Step 1: Identify the correct method for once listeners

        The method to add a once listener is once, not on.
      2. Step 2: Check the callback syntax

        The callback must be a function, so () => { console.log('Started'); } is correct. Passing the result of console.log directly is wrong.
      3. Final Answer:

        emitter.once('start', () => { console.log('Started'); }); -> Option A
      4. Quick Check:

        Use emitter.once(event, callback) with a function [OK]
      Hint: Use emitter.once with a function callback [OK]
      Common Mistakes:
      • Using emitter.on instead of emitter.once
      • Passing console.log() call instead of function
      • Incorrect function syntax in listener
      3. Consider this code snippet:
      const EventEmitter = require('events');
      const emitter = new EventEmitter();
      
      emitter.once('ping', () => console.log('Ping received'));
      emitter.emit('ping');
      emitter.emit('ping');

      What will be the output?
      medium
      A. No output
      B. Ping received Ping received
      C. Ping received
      D. Error thrown

      Solution

      1. Step 1: Understand emitter.once behavior

        The listener runs only once on the first emit('ping') call.
      2. Step 2: Analyze the two emit calls

        The first emit('ping') triggers the listener and prints 'Ping received'. The second call finds no listener because it was removed after first run.
      3. Final Answer:

        Ping received -> Option C
      4. Quick Check:

        once listener runs once, so output once [OK]
      Hint: once listeners run only on first emit call [OK]
      Common Mistakes:
      • Expecting output on second emit
      • Confusing once with on listeners
      • Assuming listener stays after first run
      4. What is wrong with this code snippet?
      const EventEmitter = require('events');
      const emitter = new EventEmitter();
      
      emitter.once('data', console.log('Data event'));
      emitter.emit('data');
      medium
      A. The listener callback is called immediately, not on event emit.
      B. The event name 'data' is invalid for once listeners.
      C. The emitter.emit call is missing a callback function.
      D. The once method does not exist on EventEmitter.

      Solution

      1. Step 1: Check how the callback is passed

        The code passes console.log('Data event') which calls console.log immediately and passes its return (undefined) as listener.
      2. Step 2: Understand correct callback usage

        The callback should be a function, e.g., () => console.log('Data event'), to run only on event emit.
      3. Final Answer:

        The listener callback is called immediately, not on event emit. -> Option A
      4. Quick Check:

        Pass function, not function call, as listener [OK]
      Hint: Pass function, not function call, as listener [OK]
      Common Mistakes:
      • Calling function instead of passing it
      • Assuming event name invalid
      • Thinking once method is missing
      5. You want to log a message only the first time a user connects to your server using an EventEmitter server. Which code snippet correctly achieves this and prevents multiple logs if the user reconnects?
      hard
      A. server.on('connect', () => console.log('User connected'));
      B. server.on('connect', console.log('User connected'));
      C. server.once('connect', console.log('User connected'));
      D. server.once('connect', () => console.log('User connected'));

      Solution

      1. Step 1: Identify the requirement for single execution

        Logging only once means the listener should run once and then remove itself.
      2. Step 2: Choose the correct method and callback syntax

        server.once('connect', () => console.log('User connected')) uses the once method with a function callback, ensuring single log on first connect.
      3. Final Answer:

        server.once('connect', () => console.log('User connected')); -> Option D
      4. Quick Check:

        Use once with function callback for single event handling [OK]
      Hint: Use once with function callback to run once [OK]
      Common Mistakes:
      • Using on instead of once for single execution
      • Passing function call instead of function
      • Expecting multiple logs with once listener