【发布时间】:2022-09-29 18:12:33
【问题描述】:
我试图在nestjs EventEmitter 模块的帮助下实现一个具有无服务器lambda 函数的异步工作者。
处理程序在发出事件时被调用,但函数在 async / await 调用之前被关闭。
我尝试使用 emit 和 emitAsync 函数和不同的参数
@OnEvent(AccountEvents.NEW_ACCOUNT, {async:true, promisify:true})
制作人片段
public async execute(event: EventDetail): Promise<void> {
await this.eventEmitter.emitAsync(AccountEvents.NEW_ACCOUNT, event);
}
侦听器片段
@OnEvent(AccountEvents.NEW_ACCOUNT)
public async handleAccountCreatedEvent(event: EventDetail): Promise<void> {
this.logger.log({ message: `Log1: ${AccountEvents.NEW_ACCOUNT} Handler`, event });
const message = await this.testAsync();
this.logger.log({ message });
this.logger.log({ message: \'Log 3: Event Processing Successfuly Completed\' });
}
private testAsync(): Promise<string> {
return new Promise(res => {
setTimeout(() => {
res(\'Log 2: Promise resolved after one sec\');
}, 1000);
});
}
期望输出:所有 3 条日志语句 实际输出:只有第一个日志语句(Log1)
标签: javascript nestjs serverless-framework eventemitter