EventEmitter2을 내 응용 프로그램 내에서 메시지 버스 내부로 사용하고 있습니다. 이제 일부 이벤트 처리기를 바인딩하고 바인딩 해제해야합니다.바인드 된 함수를 이벤트에 바인딩하고 바인딩 해제
messageBus.on('foo::bar', _.bind(eventHandler, this));
문제는 내가 시간에 나중에 그들을 바인딩을 해제 할 필요가있다, 그래서 나는 썼다 : 나는 주어진 상황에 bind에 또한 그들이 원하는대로, 나는 다음과 같은 구문을 끝낼
messageBus.off('foo::bar', _.bind(eventHandler, this));
매번 _.bind
이 래퍼 함수의 새 인스턴스를 반환하므로이 기능이 작동하지 않습니다. 지금은 물론 내가 한 번 _.bind
을 실행하고 결합 랩 기능을, 이와 같은 수 있습니다 :이 완벽하게 잘 작동
var fn = _.bind(eventHandler, this);
messageBus.on('foo::bar', fn);
messageBus.off('foo::bar', fn);
,하지만 당신은 몇 가지 이벤트 핸들러가있는 경우, 코드를 신속하게 필요한 것보다 적은 읽을 수하기 시작합니다.
bind
함수 호출을 외부화 할 필요없이 어떻게 해결할 수 있습니까? 여러 번 호출하고 함수와 컨텍스트가 같은 경우 항상 동일한 래퍼를 반환하는 대체 함수가 있습니까?