EventEmitter的异步回调

时间:2017-12-03 07:59:10

标签: javascript typescript asynchronous callback promise

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

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

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

1 个答案:

答案 0 :(得分:0)

  

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

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

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

所以,你可以这样做,以便在你的回调函数中使用await(出于你自己的内部原因),但它不会改变回调之外的任何其他内容。它并没有改变eventEmitter以任何方式完成其余业务的方式。

  

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

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

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