Javascript emitter.emit返回承诺并等待其侦听器

Javascript emitter.emit返回承诺并等待其侦听器,javascript,events,event-handling,promise,Javascript,Events,Event Handling,Promise,我有一个事件发射器和注册到它的侦听器。我希望emit返回一个在所有侦听器解析后解析的承诺(如果它们返回承诺)。比如: emitter.on('my_event', function(data) { return asyncStuff(); // returns a promise }); emitter.on('my_event', function(data) { return moreAsyncStuff(); // returns a promise }); emitt

我有一个事件发射器和注册到它的侦听器。我希望
emit
返回一个在所有侦听器解析后解析的承诺(如果它们返回承诺)。比如:

emitter.on('my_event', function(data) {
    return asyncStuff(); // returns a promise
});

emitter.on('my_event', function(data) {
    return moreAsyncStuff(); // returns a promise
});

emitter.emit('my_event', {some_data: 'bla'}).then(function () {
    // this happens after both promises from the above listeners resolve
});
理想情况下,我还希望返回已解决承诺的结果,如
all
函数:

emitter.emit('my_event', {some_data: 'bla'}).all(function (resultsArr) {
    // resultsArr contains the results of the promises from the listeners
});

是否有执行此操作的库/节点模块?或者用一些聪明的方法用最少的代码来实现这一点?

eventEmitter对象不提供对侦听器返回内容的任何访问,因此您无法按要求的方式执行要求的操作。事实上,
eventEmitter
对象根本不使用侦听器的返回值-它根本不关注它。你将不得不重新思考如何解决你的问题。根据文档,
.emit()
根据是否有侦听器返回
true
false
。@jfriend00感谢您的评论。澄清一下——我并没有特别询问被接受的
emitter
spec(尽管遵守spec有明显的优势)。我正在寻找一个npm模块或库的形式的解决方案,它提供了我描述的特性。