我有一个具有此功能的事件/侦听器管理器:
var addListener = function(event, listener) {
myListeners[event].push(listener); //assume this code works
}
但现在我需要改变它,使它看起来像这样:
var addListener = function(event, listener, fireFirst) {
if(fireFirst) {
myListenersToFireFirst[event].push(listener);
} else {
myListenersToFireSecond[event].push(listener);
}
}
这样当fireEvent
函数被调用时,它将myListenersToFireFirst
首先触发数组中的侦听器,然后触发第二个数组中的侦听器。
所以它看起来像这样:
var fireEvent = function(event) {
var firstListeners = myListenersToFireFirst[event];
//for each listener in firstListeners, call `apply` on it
var secondListeners = myListenersToFireSecond[event];
//for each listener in secondListeners, call `apply` on it
}
这是在 JavaScript 中完成此任务的最佳方式吗?有没有更优雅的方法来实现这个监听器事件触发的优先级列表?