1
我在使用EventEmitter2作爲我的應用程序內部的消息總線。現在我需要綁定和解綁一些事件處理程序。正如我希望他們也bind他們給定的情況下,我最終的語法如下:綁定綁定函數並將其解除綁定到事件
messageBus.on('foo::bar', _.bind(eventHandler, this));
的問題是,我需要在以後的某個時間取消綁定他們,所以我寫了:
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
功能的呼叫外部化?是否有一個替代函數總是返回相同的包裝,以防多次調用並且函數和上下文相同?