2017-12-03 241 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,但它不會改變函數的調用方式。無論是處於異步函數還是常規函數,同步代碼仍然是同步代碼。我真的建議你閱讀更多關於異步函數的實際內容。