我是 Node.js 的新手,在调试问题时遇到了麻烦。我创建了一个充当事件发射器的对象,但是,当事件发出时,我的回调不会被调用。
我已将发射器定义如下:
var EventEmitter = require('events').EventEmitter;
var util = require('util');
// this is the object which will inherit from EventEmitter
function RequestStreamReader() {
EventEmitter.call(this);
}
util.inherits(RequestStreamReader, EventEmitter);
module.exports = RequestStreamReader;
RequestStreamReader.prototype.read = function(req) {
var data = '';
req.on('data', function(chunk){
data += chunk;
});
req.on('end', function() {
this.emit('readComplete', data);
});
};
下面列出了使用此模块的代码。尽管this.emit(...)
在发射器中调用了我的“readComplete”事件的处理程序(我已经在调试器中验证了这一点),但它的处理程序并未执行。
var Reader = require("../utils/requestStreamReader.js");
var reader = new Reader();
reader.on('readComplete', function(data){
var userData = JSON.parse(data);
var newUser = userModule.createFromDto(userData);
userRepository.create(newUser, onSuccess, onFailure);
});
reader.read(req);
关于我可能做错了什么的任何想法?
谢谢!