Node.js의 이벤트 응용 프로그램을 이해하는 데 약간의 문제가 있습니다. 다음과 같은 표준 사용자 정의 EventEmitter 구현을 고려하십시오.Node.js events applications
var EventEmitter = require('events').EventEmitter;
var util = require('util');
function SimpleEE() {
var self = this;
self.val = false;
EventEmitter.call(this);
}
util.inherits(SimpleEE, EventEmitter);
SimpleEE.prototype.changeVal = function() {
self.val = !self.val;
self.emit('valChanged', self.val);
}
SimpleEE.on('valChanged', function(newVal) {
console.log('val was changed to ' + newVal);
});
이 경우에는 수신기가있는 지점이 표시되지 않습니다. 이벤트가 발생할 때마다 동일한 액션이 수행되기를 원한다면 emit()
호출 대신 리스너의 콜백 함수를 사용하지 않는 것이 좋습니다.
원래 혼란스러운 이유는 원래 이벤트가 모듈 간 통신을위한 것이라고 생각했기 때문입니다. 즉 적절한 동작이 다른 모듈에서 발생하면 하나의 모듈에 경고가 표시됩니다. 그러나, 내 이해에서 에미 터와 리스너가 작동하려면 동일한 EventEmitter 인스턴스 아래에 등록되어야합니다.
이해해 주셔서 감사합니다.