저는 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);
});
};
아래에 나열되어이 모듈을 소비하는 코드를 다음과 같이
내 이미 터를 정의했습니다. 내 "readComplete"이벤트에 대한 핸들러는 이미 터에서 this.emit(...)
이 호출 되었음에도 불구하고 실행되지 않습니다. 디버거에서 이것을 확인했습니다.
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