She*_*lva 0 eventemitter nestjs
我是事件发射器的新手,并尝试在我的 Nest JS 项目中实现它们,问题是同一个事件被触发多次(准确地说是 6 次),有什么原因以及如何解决这个问题吗?
这是service.ts文件中用于发出事件的
代码片段。this.eventEmitter.emit('company.created', companyCreatedHistory);
这是我的 Event ,位于listener.ts文件中
@Injectable()
export class EntityCreatedListener {
constructor(private readonly historyService: HistoriesService) {}
@OnEvent('company.created')
handleCompanyCreatedEvent(eventObject: typeof eventEmitterObject) {
console.log('Hi')
this.createAuditLog(eventObject, 'company.created');
}
Run Code Online (Sandbox Code Playgroud)
引用自: https: //github.com/nestjs/nest/tree/master/sample/30-event-emitter https://www.npmjs.com/package/@nestjs/event-emitter
因此,查看您的代码,我猜测问题是因为您EntityCreatedListener的应用程序中有不同的飞行实例。您可能已实例化它 6 次,这就是该事件触发 6 次的原因。
所有这些实例都EntityCreatedListener将侦听该company.created事件,并在该方法调用触发该事件时触发this.eventEmitter.emit('company.created', companyCreatedHistory);。
修复方法是:检查应用程序中的模块,并确保EntityCreatedListener模块代码此部分的提供程序导入中的多个位置未导入该模块@Module({imports: [],controllers: [],providers: []})。仅保留 的一个实例EntityCreatedListener(因此,如果您想在多个地方使用,则应仅将其导入到一个模块中,并通过导出它来共享到其他模块)
| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |