【问题标题】:Using Async Event Listener with Nestjs EventEmitter Module and Serverless functions将异步事件侦听器与 Nestjs EventEmitter 模块和无服务器函数一起使用
【发布时间】:2022-09-29 18:12:33
【问题描述】:

我试图在nestjs EventEmitter 模块的帮助下实现一个具有无服务器lambda 函数的异步工作者。

处理程序在发出事件时被调用,但函数在 async / await 调用之前被关闭。

我尝试使用 emitemitAsync 函数和不同的参数 @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


    【解决方案1】:

    我面临完全相同的问题,您设法解决了吗? 谢谢

    【讨论】:

    • 这篇文章看起来不像是试图回答这个问题。这里的每一篇文章都应该是明确的尝试回答这个问题;如果您有批评或需要澄清问题或其他答案,您可以在其下方直接post a comment(如这个)。请删除此答案并创建评论或新问题。见:Ask questions, get answers, no distractions
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 2021-07-05
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多