emitter.emit返回一个promise,并等待它的监听器

时间:2017-05-01 07:31:06

标签: javascript events event-handling promise

我有一个事件发射器,以及注册它的侦听器。我希望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
});

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

0 个答案:

没有答案