0
我是Node.js的新手,並且在調試問題時遇到問題。我創建了一個充當事件發射器的對象,但是,當事件發出時,我的回調函數不會被調用。從EventEmitter繼承的對象不會引發事件
我定義我的發射器如下:
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);
關於我可能做錯什麼的想法?
謝謝!
真棒的感謝!我懷疑這不是唯一一次我遇到'this'關鍵字引起的問題。 – Kartik
很好的概述:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this – ksimons