以事件驱动的方式编写异步代码

Writing Async code in event driven way

我在 node.js 编程,有时异步函数变得非常脏。 我想编写异步代码,但在事件发生时检索数据我知道承诺,但这并不是我想要的,只是我问的是这样的

asyncFunc(error,dt,ld){
//some async code such as db operations
}

然后我想以事件方式获取数据

asyncFunc.on("dt",function(dt){do something});
asyncFunc.on("error",function(err){i have an error object});
asyncFunc.on("ld",function(ls){loading});

有什么方法可以做到这一点我知道 promises 和一些 3rd 方库反对回调地狱但我的问题尤其是我写了如何设计我的代码?

使用 nodejs 事件

var asyncFunc = function(error,dt,ld){
    var events = require('events');
    var eventEmitter = new events.EventEmitter();

    //emit error
    eventEmitter.emit('error', new Error('some error'));
    //emit dt
    eventEmitter.emit('dt', 'some data for dt');
    //emit dld
    eventEmitter.emit('ld', {message: 'some details for ld', ld: ld});
    return eventEmitter;
}

//then
asyncFunc.on("dt",function(dt){/*do something*/});
asyncFunc.on("error",function(err){/*i have an error object*/});
asyncFunc.on("ld",function(ls){/*loading*/});

很棒的文章here
官方nodejs event docs