I am new to Node.js and am having trouble debugging an issue. I have created an object which acts as an event emitter, however, my callbacks don't get called when the event is emitted.
I have defined my emitter as follows:
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);
});
};
The code that consumes this module is listed below. The handler for my "readComplete" event does not execute despite the fact that this.emit(...)
is called in the emitter (I have verified this in the debugger).
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);
Any ideas on what I might be doing wrong?
Thanks!