其他模块中的节点事件发射器
Node event emitter in other modules
我有三个不同的javascript文件,最小的一个是发出事件,而第二个(较大的一个)文件会拾取事件并将其进一步发送到主文件。这就是我迄今为止所尝试的:
//mini.js
var EventEmitter = require('events').EventEmitter;
var ee = new EventEmitter;
console.log("Emitting event");
var message = "Hello world";
ee.emit('testing',message);
//second.js
var mini = require('./mini.js');
var EventEmitter = require('events').EventEmitter;
var ee = new EventEmitter;
mini.on('testing',function(message){
console.log("Second file received a message:",message);
console.log("Passing further");
ee.emit('testing',message);
});
//main.js
var sec = require('./second.js');
sec.on('testing',function(message){
console.log("Main file received the message",message);
});
然而,我得到
mini.on('testing',function(message){
^
TypeError: undefined is not a function
使用节点执行文件时出错。
我在这里做错了什么?感谢
您没有在mini.js中导出EventEmitter
实例。将其添加到mini.js:
module.exports = ee;
如果您想导出其EventEmitter
实例以使其可用于main.js,您还需要在second.js中添加类似的行。
您将遇到的另一个问题是,在second.js添加其testing
事件处理程序之前,您在mini.js中发出testing
,因此它最终会丢失该事件。
这个应该有效:
这是要先放在内部的内容。js:
//first.js
var util = require('util'),
EventEmitter = require('events');
function First () {
EventEmitter.call(this)
}
util.inherits(First, EventEmitter);
First.prototype.sendMessage = function (msg) {
this.emit('message', {msg:msg});
};
module.exports = First;
这是要放入second.js:中的内容
//second.js
var First = require('./first.js');
var firstEvents = new First();
// listen for the 'message event from first.js'
firstEvents.on('message',function(data){
console.log('recieved data from first.js is : ',data);
});
// to emit message from inside first.js
firstEvents.sendMessage('first message from first.js');
现在运行node second.js
,应该会为您触发"message"事件。
您可以使用此模式来实现模块之间的任何级别的消息传递。
希望这能有所帮助。
相关文章:
- NodeJS-readline暂停和恢复事件发射器(逐行读取)
- Javascript事件发射器一次处理多个事件
- 无法模拟在 node.js 中使用事件发射器刺激的类中的函数
- Node.js+Mocha+Should.js如何测试事件发射器抛出的错误
- 事件发射器模式如何在Node,sockets.io中工作
- 如何使对象属性函数成为事件发射器
- 您应该如何从节点中的事件发射器继承
- 其他模块中的节点事件发射器
- Angular 2 ES6/7事件发射器更新其他组件
- 绑定事件发射器上的单个事件
- 在模块之间共享的事件发射器
- 为什么在传递/公开事件发射器时需要包装我的事件发射器的 on 函数
- 事件发射器与在 AngularJs 中更新大型数据集时的$watch
- 如何在node中编写事件发射器.js让你创建一个函数“myFunction”,然后在运行时调用成功或失败
- 将立即调用的函数表达式 (IIFE) 与事件发射器一起使用
- 在扩展事件发射器的 ES6 类定义中设置事件侦听器
- 警告:可能检测到事件发射器内存泄漏.添加了 11 个 AppUp > 听众.使用 emitter.setMaxListe
- 节点.js事件发射器源代码的说明
- 从事件发射器继承的对象不会引发事件
- process.on('uncaughtException')的令人困惑的事件发射器/闭包模式