以事件驱动的方式编写异步代码
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
我在 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