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

Writing Async code in event driven way

本文关键字:异步 代码 方式编 事件驱动的      更新时间:2023-09-26

我在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});
我知道promise和一些第三方库都是反对回调的但我的问题是,我写代码的时候要怎么设计呢

使用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事件文档