0
0
NestJSframework~20 mins

Event patterns (event-based) in NestJS - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Event Mastery in NestJS
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output when an event is emitted?
Consider a NestJS event emitter setup where a listener logs a message when an event named 'user.created' is emitted. What will be logged when the event is emitted with payload { id: 42 }?
NestJS
import { Injectable } from '@nestjs/common';
import { EventEmitter2, OnEvent } from '@nestjs/event-emitter';

@Injectable()
export class UserService {
  constructor(private eventEmitter: EventEmitter2) {}

  createUser() {
    this.eventEmitter.emit('user.created', { id: 42 });
  }
}

@Injectable()
export class UserListener {
  @OnEvent('user.created')
  handleUserCreatedEvent(payload: { id: number }) {
    console.log(`User created with id: ${payload.id}`);
  }
}
ANo output, event not handled
BUser created with id: undefined
CUser created with id: 42
DError: EventEmitter2 is not defined
Attempts:
2 left
💡 Hint
Think about how the @OnEvent decorator works and what payload is passed to the listener.
📝 Syntax
intermediate
2:00remaining
Which option correctly defines an event listener in NestJS?
You want to listen to an event named 'order.completed' in a NestJS service. Which code snippet correctly sets up the listener?
A
@OnEvent('order.completed')
handleOrderCompleted(payload: any) {
  console.log('Order completed:', payload);
}
B
@EventListener('order.completed')
handleOrderCompleted(payload: any) {
  console.log('Order completed:', payload);
}
C
@Subscribe('order.completed')
handleOrderCompleted(payload: any) {
  console.log('Order completed:', payload);
}
D
@ListenEvent('order.completed')
handleOrderCompleted(payload: any) {
  console.log('Order completed:', payload);
}
Attempts:
2 left
💡 Hint
Check the official NestJS event emitter decorator name.
🔧 Debug
advanced
2:30remaining
Why does the event listener not respond?
Given the following NestJS code, why does the listener not log anything when the event is emitted?
NestJS
import { Injectable } from '@nestjs/common';
import { EventEmitter2, OnEvent } from '@nestjs/event-emitter';

@Injectable()
export class NotificationService {
  constructor(private eventEmitter: EventEmitter2) {}

  sendNotification() {
    this.eventEmitter.emit('notification.sent', { message: 'Hello' });
  }
}

@Injectable()
export class NotificationListener {
  @OnEvent('notification.send')
  handleNotification(payload: { message: string }) {
    console.log('Notification:', payload.message);
  }
}
AThe event name in the listener ('notification.send') does not match the emitted event name ('notification.sent').
BThe listener method is missing the async keyword.
CEventEmitter2 is not injected properly in NotificationListener.
DThe payload type is incorrect and causes a runtime error.
Attempts:
2 left
💡 Hint
Check the event names carefully for exact matches.
state_output
advanced
2:30remaining
What is the final state after emitting multiple events?
A NestJS service emits two events in sequence. A listener updates a count each time it receives the event. What is the final count after both events?
NestJS
import { Injectable } from '@nestjs/common';
import { EventEmitter2, OnEvent } from '@nestjs/event-emitter';

@Injectable()
export class CounterService {
  private count = 0;

  constructor(private eventEmitter: EventEmitter2) {}

  increment() {
    this.eventEmitter.emit('counter.increment');
  }

  getCount() {
    return this.count;
  }
}

@Injectable()
export class CounterListener {
  private count = 0;

  @OnEvent('counter.increment')
  handleIncrement() {
    this.count += 1;
  }

  getCount() {
    return this.count;
  }
}

// In application code:
// counterService.increment();
// counterService.increment();
// What is counterListener.getCount()?
A0
BError: count is private and inaccessible
C1
D2
Attempts:
2 left
💡 Hint
Events decouple the emitter and listener. The listener updates its own state independently each time the event is emitted.
🧠 Conceptual
expert
3:00remaining
Which statement best describes event propagation in NestJS event emitter?
In NestJS using EventEmitter2, what happens when multiple listeners are registered for the same event and one listener throws an error during event handling?
AListeners are called asynchronously; errors in one listener do not affect others, all listeners run regardless.
BAll listeners are called in order; if one throws an error, the error is propagated and remaining listeners are not called.
CListeners are called synchronously; if one throws an error, it is caught internally and logged, allowing others to run.
DOnly the first listener is called; if it throws an error, event propagation stops immediately.
Attempts:
2 left
💡 Hint
Think about synchronous event emission and error handling in EventEmitter2 by default.