Pentru a evita apelurile directe între module puternic cuplate, pachetul @nestjs/event-emitter oferă o implementare nativă a modelului Observer / Pub-Sub în memorie.
Când o acțiune importantă se finalizează, serviciul apelează this.eventEmitter.emit('nume.eveniment', date), iar orice alt serviciu din aplicație poate asculta și reacționa asincron prin decoratorul @OnEvent('nume.eveniment').
Exemplu: Publicare și ascultare eveniment ‘user.registered’
import { Injectable } from '@nestjs/common';
import { EventEmitter2, OnEvent } from '@nestjs/event-emitter';
export class UserRegisteredEvent {
constructor(public readonly email: string) {}
}
@Injectable()
export class UsersService {
constructor(private eventEmitter: EventEmitter2) {}
async registerUser(email: string) {
console.log(`Utilizator salvat: ${email}`);
this.eventEmitter.emit('user.registered', new UserRegisteredEvent(email));
}
}
@Injectable()
export class EmailNotificationService {
@OnEvent('user.registered')
handleUserRegistered(event: UserRegisteredEvent) {
console.log(`Trimitere email de bun venit către: ${event.email}`);
}
}
Întrebări & Exemple de Cod:
Sistemul Decuplat de Evenimente cu EventEmitter2Ai o nelămurire despre utilizarea comenzii
Sistemul Decuplat de Evenimente cu EventEmitter2sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.