事件 – NodeJS等待回调完成事件发射

我有和NodeJS用Express编写的应用程序,我试图使用EventEmitter创建一种插件架构,插件通过监听发出的事件挂钩到主代码中.

我的问题来自插件函数发出异步请求(在这种情况下从mongo获取数据)这导致插件代码完成并将控制权返回到原始发射器,然后在插件代码中的异步请求之前完成执行饰面.

例如:

主要应用:

// We want to modify the request object in the plugin  
self.emit('plugin-listener',request);

插入:

// Plugin function listening to 'plugin-listener','request' is an arg
console.log(request);

// Call to DB (async)
this.getFromMongo(some_data,function(response){
    // this may not get called until the plugin function has finished!
}

我从“getFromMongo”函数回避主代码的回调函数的原因是可能有0个或多个插件监听事件.理想情况下,在将控制权返回给主应用程序之前,我想要某种方式等待数据库内容完成

非常感谢

解决方法

使用EventEmitter进行插件/中间件管理并不理想,因为如果侦听器具有异步代码,则无法确保侦听器按顺序执行.当这些侦听器彼此交互或相同数据时,这尤其是一个问题.

这就是为什么连接/表达中间件函数存储在一个数组中并一个一个地执行,而不是使用EventEmitter;他们每个人都需要调用next();完成任务后的功能.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...