问题
I'm trying to teach myself both javascript and nodejs at the same time here and have not been able to get custom event emitting working. I am not receiving any errors, just not seeing the event being emitted. Is someone able to point out my (likely obvious) logical error?
I have a class declared in a separate module:
var util = require( 'util' ),
events = require( 'events' );
function logger(){
var logpath, initialised, logstream;
events.EventEmitter.call(this);
}
util.inherits(logger, events.EventEmitter);
logger.prototype.init = function(){
this.emit( 'initialised' );
}
exports.logger = logger;
And then a main file:
var logger = require( "./logManager" ).logger;
var myLogger = new logger;
myLogger.init();
myLogger.on( 'initialised' ){
console.log( "IT'S ALIVE!" );
}
回答1:
First off, you have a syntax error in your main file. When you attach an event handler, that event handler is always a function
, and the signature is on(eventName, eventHandler)
, so you need:
myLogger.on('initialised', function() {
console.log("IT'S ALIVE!");
});
Also, you have to attach the event handler before you call init
, or you will miss the event, so in full:
var logger = require( "./logManager" ).logger;
var myLogger = new logger;
myLogger.on('initialised', function() {
console.log("IT'S ALIVE!");
});
myLogger.init();
来源:https://stackoverflow.com/questions/9479765/emitting-event-in-node-js