-
Notifications
You must be signed in to change notification settings - Fork 29.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add async emit methods to EventEmitter #18646
Comments
Asynchronous emit has been discussed as early as 2010 or 2011. It never happened and I wouldn't expect it to happen now. Ultimately (and as you mention), it's a convenience, not a necessity. |
There doesn't seem to be much movement or interest in this feature so I'll close this out but feel free to re-open if you feel strongly about including this in core and/or plan to work on a PR. I tend to agree that it's a convenience that can be easily implemented either in a user-land module or even on a per project basis (it's a 1 liner). |
This is how I solved the async emitter https://github.com/thiagof/async-event-emitter |
Version:
v8.9.4
Platform:
Darwin pumba-5.local 17.4.0 Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64 x86_64
Subsystem:
events
https://nodejs.org/api/events.html#events_asynchronous_vs_synchronous instructs users to cause asynchronous event execution in the event handlers by using
setImmediate
orprocess.nextTick
, which means that, when usingEventEmitter#emit
, asynchronous event handling is left to clients, and theEventEmitter
has no control over whether an event is handled asynchronously or synchronously. In cases where theEventEmitter
is sensitive to performance, theEventEmitter
itself can dictate the event emission is asynchronous via code similar to the following:The
emit
line above could be replaced by something convenient likeor, even more conveniently,
which uses either
setImmediate
orprocess.nextTick
according to the current environment.The text was updated successfully, but these errors were encountered: