2016-07-26 3 views
0

사용자 정의 이벤트 수신자의 특정 이벤트 만 허용하는 방법이 있습니까? 뭔가가있는 경우특정 이벤트 만 허용

예를 들어,이 모든 것이 예상대로 작동과 같은 :

const EventEmitter = require('events'); 

class myEvent extends EventEmitter { 
    constructor() { 
     super(); 
     var self = this; 
     setInterval(function() { 
      self.emit('1stEvent'); 
     }, 1000) 
     setInterval(function() { 
      self.emit('2ndEvent'); 
     }, 2000) 
    } 

} 

var MyEvent = new myEvent(); 
MyEvent.on('1stEvent', function() { 
    console.log('1st Event triggered'); 
}); 
MyEvent.on('2ndEvent', function() { 
    console.log('2nd Event triggered'); 
}); 
MyEvent.on('3rdEvent', function() { 
    console.log('3rd Event triggered'); 
}); 

내가 콜백 첫 번째 이벤트 및 제 2 이벤트에 2 초마다의 모든 초를 얻을. 셋째로 나는이 사건을 내지 않기 때문에 아무 일도 일어나지 않는다. 이 클래스가이 이벤트가 정의되어 있지 않고 청취자를 추가 할 수 없거나 이벤트 1과 2에 청취자 만 추가 할 수 있다고 알려주는 방법이 있습니까?

답변

0

기본 제공 기능은 없지만이를 수행 할 수있는 일종의 래퍼를 만들 수 있습니다.

const EventEmitter = require('events'); 

class myEvent extends EventEmitter { 
    constructor() { 
     super(); 

     this._events = new Set(); 
     this._events.add('1stEvent');  
     this._events.add('2ndEvent'); 

     var self = this; 
     setInterval(function() { 
      self.emit('1stEvent'); 
     }, 1000) 
     setInterval(function() { 
      self.emit('2ndEvent'); 
     }, 2000) 
    } 

    on(event, callback) { 
     if(!this._events.has(event)) { 
     console.log('Event not registered'); 
     return; 
     } 

     super.on(event, callback); 
    } 

} 
+0

고맙습니다. 저에게 좋습니다! –