Challenge - 5 Problems
Event & Callback Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate2:00remaining
When to prefer events over callbacks?
In Node.js, which scenario best justifies using events instead of callbacks?
Attempts:
2 left
💡 Hint
Think about how events allow multiple listeners and callbacks handle one response.
✗ Incorrect
Events are useful when multiple things can happen over time and you want to react to each occurrence separately. Callbacks are simpler for one-time responses.
❓ component_behavior
intermediate2:00remaining
Output of event emitter with multiple listeners
What will be printed when this Node.js code runs?
Node.js
const EventEmitter = require('events'); const emitter = new EventEmitter(); emitter.on('ping', () => console.log('First listener')); emitter.on('ping', () => console.log('Second listener')); emitter.emit('ping');
Attempts:
2 left
💡 Hint
Remember that multiple listeners can respond to the same event.
✗ Incorrect
Both listeners are registered for the 'ping' event, so emitting 'ping' calls both callbacks in order.
📝 Syntax
advanced2:00remaining
Identify the error in callback usage
What error does this code produce?
Node.js
function fetchData(callback) {
setTimeout(() => {
callback(null, 'data');
}, 100);
}
fetchData((error, result) => {
if (error) {
console.log('Error:', error);
} else {
console.log('Result:', result);
}
});
fetchData('not a function');Attempts:
2 left
💡 Hint
Check what happens when a non-function is passed as callback.
✗ Incorrect
The second call passes a string instead of a function, so when setTimeout tries to call it, a TypeError occurs.
❓ state_output
advanced2:00remaining
State after event and callback usage
What is the value of the variable
count after this code runs?Node.js
const EventEmitter = require('events'); const emitter = new EventEmitter(); let count = 0; emitter.on('increment', () => { count += 1; }); function doWork(callback) { emitter.emit('increment'); callback(); } doWork(() => { count += 10; });
Attempts:
2 left
💡 Hint
Consider the order of event emission and callback execution.
✗ Incorrect
The event listener increments count by 1, then the callback adds 10, total 11.
🔧 Debug
expert2:00remaining
Why does the listener not run on the second emit?
Given this code, why does the second `emitter.emit('data')` not print anything?
Node.js
const EventEmitter = require('events'); const emitter = new EventEmitter(); emitter.once('data', () => console.log('Data received')); emitter.emit('data'); emitter.emit('data');
Attempts:
2 left
💡 Hint
Check how the 'once' method works for event listeners.
✗ Incorrect
The 'once' method registers a listener that runs only the first time the event is emitted. The second emit triggers no listener.