0

我试图在这里同时自学 javascript 和 nodejs 并且无法让自定义事件发出工作。我没有收到任何错误,只是没有看到正在发出的事件。有人能够指出我的(可能是显而易见的)逻辑错误吗?

我在一个单独的模块中声明了一个类:

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;

然后是一个主文件:

var logger = require( "./logManager" ).logger;

var myLogger = new logger;

myLogger.init();

myLogger.on( 'initialised' ){
     console.log( "IT'S ALIVE!" );
}
4

1 回答 1

0

首先,您的主文件中有语法错误。当您附加事件处理程序时,该事件处理程序始终是 a function,并且签名是on(eventName, eventHandler),因此您需要:

myLogger.on('initialised', function() {
    console.log("IT'S ALIVE!");
});

此外,您必须在调用之前附加事件处理程序init,否则您将错过该事件,因此完整:

var logger = require( "./logManager" ).logger;

var myLogger = new logger;

myLogger.on('initialised', function() {
    console.log("IT'S ALIVE!");
});

myLogger.init();
于 2012-02-28T10:32:02.807 回答