2012-02-28 46 views
0

我試圖在這裏同時教自己既javascript和nodejs,也沒有能夠獲得自定義事件發射工作。我沒有收到任何錯誤,只是沒有看到事件被髮射。有人能夠指出我的(可能是明顯的)邏輯錯誤嗎?在Node.js中發射事件

我有一個單獨的模塊中聲明一個類:

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!"); 
} 

回答

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(); 
+0

唉!語法錯誤只是當我將代碼複製到這個問題中時,真正的問題是在事件被髮射之前沒有設置事件處理程序......這樣一個簡單的問題我簡直不敢相信我錯過了。 非常感謝您的幫助! – Scotty 2012-02-28 10:37:55

+0

我想...... NP! – 2012-02-28 10:39:26