在Nestjs和EventEmitter2处理程序中获取事件名称

问题描述 投票:0回答:2

我有以下代码:

  @OnEvent("**")
  public handleEverything(parentId: number): void {
    // @ts-expect-error this.envent
    console.log(this.event)
  }

我尝试使用

this.event
获取事件名称,但它返回
undefined
。有没有办法使用 Nestjs 和 EventEmitter 获取处理程序内的事件名称?

nestjs eventemitter
2个回答
2
投票

我认为这是不可能的。您可以在分派事件时向有效负载添加参数并在处理程序中使用它:

发货:

this.eventEmitter.emit('eventName', { type: 'eventType', others: 'others' });

听:

@OnEvent("**")
public handleEverything(payload: any): void {
  if (payload.type === 'eventType') {
    // do something
  }
}

0
投票

您可以使用事件发射器的

onAny
方法。所以你的代码可能如下所示

this.eventEmitter
  .onAny((event: string | string[], ...values: any[]) => {
    // Handler code here
  });

因此,在这种情况下,您可以同时处理事件名称和广播消息。

© www.soinside.com 2019 - 2024. All rights reserved.