我有一个事件发射器,以及注册它的侦听器。我希望emit
返回一个在所有侦听器解析后解析的promise(如果它们返回一个promise)。类似的东西:
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
});
是否有库/节点模块执行此操作?或者用最少的代码做一些聪明的方法?