【发布时间】:2016-07-31 12:54:02
【问题描述】:
我对 JavaScript 和 NodeJS 非常陌生,我只是想了解 NodeJS 中的发射器模式。当我尝试使用setInterval 函数每秒发出一个滴答事件时,程序似乎工作正常:-
var util = require('util'),
EventEmitter = require('events').EventEmitter;
var Ticker = function() {
var self = this;
setInterval(function() {
self.emit('tick');
}, 1000);
};
util.inherits(Ticker, EventEmitter)
var ticker = new Ticker();
ticker.on('tick', function() {
console.log('TICK');
});
但是,当我尝试在不使用 setInterval 方法的情况下发出事件时,我的事件没有被调用:-
var util = require('util'),
EventEmitter = require('events').EventEmitter;
var Ticker = function() {
var self = this;
self.emit('tick');
};
util.inherits(Ticker, EventEmitter)
var ticker = new Ticker();
ticker.on('tick', function() {
console.log('TICK');
});
请帮忙,我不明白,我错在哪里......
据我了解,当调用self.emit 时,ticker.on 未注册,因此错过了该事件。如果是这种情况,如何在创建对象时发出事件?
【问题讨论】:
-
提示:继承时你应该在你的构造函数中调用父构造函数,以防它需要执行自己的初始化。在这种特殊情况下,这意味着在构造函数 (
Ticker()) 中添加EventEmitter.call(this);。 -
您好,我尝试使用您的提示,在构造函数中,它显示错误提示ticker.on 不是函数
标签: javascript node.js dom-events eventemitter