0

我正在编程,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});

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

4

1 回答 1

2

使用 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*/});

伟大的文章在这里
官方nodejs事件文档

于 2015-08-24T17:16:10.123 回答