この機能を持つイベント/リスナーマネージャーがあります:
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
最初に配列内のリスナーを起動し、次に 2 番目の配列内のリスナーを起動するようにするためです。
したがって、次のようになります。
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 でこれを達成するための最良の方法ですか? リスナーイベントの発火のこの優先リストを達成するためのよりエレガントな方法はありますか?