考慮下面的代碼示例:過濾事件節點
import R from 'ramda';
import {Observable} from 'Rx';
var allClicks_ = Observable.fromEvent(window, 'click').share();
var getClicks = function(klass) {
return allClicks_.filter(e => {
return R.contains(klass, e.target.classList);
});
};
getClicks('red').subscribe(x => {
render('RED: ' + x.target.className);
});
getClicks('blue').subscribe(x => {
render('BLUE: ' + x.target.className);
});
而不是增加點擊事件偵聽器「.red」和「的.blue」,我添加了一個事件監聽器window
並過濾「.red」和「.blue」上的事件。
現在有什麼可以出現這樣的代碼錯?它是否比將事件偵聽器添加到單個DOM節點更高效(或更低效率)?或者它沒有性能優勢?
編輯:共享熱的Observable,所以只附加一個事件處理程序。
感謝您分享熱的Observable。我正在考慮創建一個小應用程序,以採用兩種方法進行基準測試但是......也許以後。 – channikhabra