我正在编写一个 Node.js v10 应用程序,我想使用await
在事件监听器函数中,所以我做了一个async
监听器功能。根据下面的代码,它似乎有效。
但我很好奇注册时是否有隐藏的缺点或我应该注意的事情async
功能作为EvenEmitter
监听器使用on()
方法?稍后有什么东西可能会回来咬我吗?
const EventEmitter = require('events');
const emitter = new EventEmitter();
const syncListener = () => {
console.log('sync bar ');
};
const asyncListener = async () => {
console.log('async bar');
};
emitter.on('foo', asyncListener);
emitter.on('foo', syncListener);
emitter.emit('foo');
事件处理程序的返回值被完全忽略。来自文档 https://nodejs.org/api/events.html#events_events:
当。。。的时候EventEmitter
对象发出一个事件,附加到该特定事件的所有函数都会同步调用。被调用的侦听器返回的任何值都将被忽略并被丢弃。
因此,将侦听器标记为异步(换句话说,返回承诺)并不重要,除非 @Ry 提到可能存在未处理的异常。如果您需要按顺序处理事件,那么您可能需要做进一步的事情(您可能还想查看异步与同步文档 https://nodejs.org/api/events.html#events_asynchronous_vs_synchronous)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)