2013-05-28 106 views
2

如何继承EventEmitter?我正在尝试以下测试:继承events.EventEmitter不起作用

var util = require('util') 
    ,events = require('events'); 

function Downloader() { 

    events.EventEmitter.call(this); 
} 
util.inherits(Downloader, events.EventEmitter); 
console.log(new Downloader() instanceof events.EventEmitter); // true 
Downloader.prototype.download = function(episode) { 
    var self = this; 

    var statusMessage = 'Downloading: ' + episode; 
    self.emit('status', statusMessage);  

    setTimeout(function() { 
     var finishedMessage = 'Downloaded ' + episode; 
     self.emit('finished', finishedMessage); 
    }, 5000);  
} 

exports.Downloader = new Downloader(); 

节点抱怨'对象'没有方法'on'。但是,当检查Downloader实例时,EventEmitter返回true。

有人可以解释一下吗?谢谢!

回答

3

哎呀。首先它应该是'module.exports'。其次它的'instanceof'而不是'instanceOf'。

我的不好。这是一个工作示例

var util = require('util') 
    ,events = require('events'); 

function Downloader() { 

    events.EventEmitter.call(this); 
} 
util.inherits(Downloader, events.EventEmitter); 

Downloader.prototype.download = function(episode) { 
    var self = this; 

    var statusMessage = 'Downloading: ' + episode; 
    self.emit('status', statusMessage);  

    setTimeout(function() { 
     var finishedMessage = 'Downloaded ' + episode; 
     self.emit('finished', finishedMessage); 
    }, 5000);  
} 

module.exports = new Downloader();