2017-12-03 317 views
0

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

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

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

回答

0

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

是的,你可以提供一个异步函数的eventEmitter,这将允许您使用await回调里面,但它不会神奇地让你的函数异步方式运行。

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

所以,你可以这样做,以便在你的回调函数中使用await(出于你自己的内部原因),但它不会改变回调之外的任何其他东西。它不会改变事件发射器以任何方式执行其他业务的方式。

这是否会导致函数异步运行?

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

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