我有以下代码:
@OnEvent("**")
public handleEverything(parentId: number): void {
// @ts-expect-error this.envent
console.log(this.event)
}
我尝试使用
this.event
获取事件名称,但它返回 undefined
。有没有办法使用 Nestjs 和 EventEmitter 获取处理程序内的事件名称?
我认为这是不可能的。您可以在分派事件时向有效负载添加参数并在处理程序中使用它:
发货:
this.eventEmitter.emit('eventName', { type: 'eventType', others: 'others' });
听:
@OnEvent("**")
public handleEverything(payload: any): void {
if (payload.type === 'eventType') {
// do something
}
}
您可以使用事件发射器的
onAny
方法。所以你的代码可能如下所示
this.eventEmitter
.onAny((event: string | string[], ...values: any[]) => {
// Handler code here
});
因此,在这种情况下,您可以同时处理事件名称和广播消息。