내 자바 스크립트 코드의 이벤트 모듈 인 EventEmitter3을 사용하고 있습니다. Node.js의 event
모듈과 동일하게 작동합니다. 그러나 나는 그것을 올바르게 사용하기 위해 문제에 직면하고있다.this.on을 사용하여 EventEmitter의 이벤트를들을 수 있습니까? 자바 스크립트에서 클래스의 Eventmitter 올바른 사용법을 찾고
일반적으로 내 코드에서 모듈을 사용하는 경우 EventEmitter
의 개체를 만든 다음 object.emit
을 사용하여 이벤트를 발생시키고 object.on
을 사용하여 이벤트를 수신합니다. 그리고 내가 일반적으로하는 일은 다른 클래스에 object.on
을 넣어 완벽하게 작동합니다.
이제 코드를 ES6 클래스로 구성하려고합니다. 따라서 EventEmitter을 내 맞춤 클래스에 확장합니다. ClassA이라고하고, EventEmitter의 하위 클래스라고 가정합니다. 나는이 같은 클래스 정의에 자신의 이벤트를 수신하는 경우 :
import EventEmitter from 'eventemitter3';
class ClassA extends EventEmitter {
constructor() {
...
}
method() {
this.emit('send');
}
this.on('send', function(data) {
// Do something with data
});
}
을 나는 this.on
라인에 예기치 않은 토큰 오류를 얻고있다. 그러나 클래스 내에서 클래스의 이벤트를 듣는 방법을 모르거나이 클래스를 사용할 수 있습니까? 리스너를 클래스 정의 외부에 두어야합니까?
이벤트 이미 터를 상속하지 않고 주입하는 이유는 무엇입니까? 종종 컴포지션은 상속보다 유연하고 깨끗합니다. – Yoda
@Yoda 당신은 전용 이벤트 이미 터 클래스를 생성하고이 ClassA에서 사용한다는 것을 의미합니까? "ClassA"객체가 여러 개 있다고 가정하고 객체가 자체 이벤트 만 듣기를 원한다면 전용 이벤트 이미 터를 사용하면 다른 객체의 이벤트를 수신 대기하게됩니까? – newguy