【发布时间】:2016-06-20 18:31:38
【问题描述】:
为简单起见,我创建了一些小文件来测试这个想法。基本上我正在寻找一种在模块上发出和事件的方法,然后在主文件中取回例如
这是运行应用程序调用的主文件
main.js
var test = require('./test')
var emitter = require('./emitter')
var emit = new emitter()
emit.on('response', function(data) {
console.log(data)
})
这是触发事件的地方
fire.js
var emitter = require('./emitter')
var emit = new emitter
var Test = function() {
emit.sendEvent('response', 'test')
}
module.exports = Test
这是为应用程序处理事件触发而创建的模块
emitter.js
var util = require('util')
var eventEmitter = require('events').EventEmitter
function Event () {
eventEmitter.call(this)
}
util.inherits(Event, eventEmitter)
Event.prototype.sendEvent = function(type, data) {
this.emit(type, data)
}
module.exports = Event
从emitter.js 中可以看出,我已将其设置为能够发出任何自定义类型,包括已解析的数据。
我似乎无法在最初的 main.js 文件中找到它。但是,如果我将emit.sendEvent('response', 'banana') 放在文件底部的main.js 中,它会被上面的侦听器拾取。这表明我的emitter.js 工作正常。
关于为什么fire.js 中发出的事件没有被拾取的任何想法都会很棒。
【问题讨论】:
标签: javascript node.js eventemitter