【问题标题】:Async callback for EventEmitterEventEmitter 的异步回调
【发布时间】:2017-12-03 23:35:59
【问题描述】:

是否可以在 TypeScript 或 JavaScript 中为 EventEmitter 提供异步回调?

someEmitter.on("anEvent", async () => console.log("hello"));

这会导致函数异步运行吗?如果是这样,为什么不能在 EventEmitter 上使用异步函数?

【问题讨论】:

    标签: javascript typescript asynchronous callback promise


    【解决方案1】:

    是否可以在 TypeScript 或 JavaScript 中为 EventEmitter 提供异步回调?

    是的,您可以为 eventEmitter 提供一个异步函数,这将允许您在回调中使用 await,但它不会神奇地使您的函数异步运行。

    它也不会改变你的回调函数之外的任何东西。 eventEmitter 将在事件发生时调用您的回调。你的回调最终会返回一个承诺,即 eventEmitter 对象不会做任何事情。

    因此,您可以这样做以便在回调函数中使用await(出于您自己的内部原因),但它不会更改回调之外的任何其他内容。它不会以任何方式改变 eventEmitter 处理其其余业务的方式。

    这会导致函数异步运行吗?

    没有。它不会改变调用函数的方式。如果你的函数完全由同步代码组成,它仍然会被同步调用和运行。

    仅供参考,对于声明为async 的任何函数都是如此。这不会以任何方式改变函数的调用方式。它改变了你可以在函数内部做的一些事情,它强制函数返回一个承诺,但它不会改变函数的调用方式。同步代码仍然是同步代码,无论是在异步函数还是常规函数中。我真的建议您阅读更多关于异步函数实际上是什么的内容。

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 2019-11-27
      • 1970-01-01
      • 2020-04-30
      • 2011-08-24
      相关资源
      最近更新 更多