在Node.js中发出事件

时间:2012-02-28 09:54:44

标签: node.js eventemitter

我正在尝试在这里同时教我自己的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!" );
}

1 个答案:

答案 0 :(得分:0)

首先,您的主文件中存在语法错误。附加事件处理程序时,该事件处理程序始终为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();