2015-09-02 1 views
0

Интересно, если есть тонкий способ как-то приоритеты слушателей событий, т.е. изменить порядок они быть названием, без изменений порядка они добавили , Snippet:Google Maps JS API v3.x - Приоритетность прослушивателей событий

var listener1 = function() { 
     console.log('@listener1'); 
    }, 
    listener2 = function() { 
     console.log('@listener2'); 
    }; 

google.maps.event.addListener(map, 'idle', listener1); 
google.maps.event.addListener(map, 'idle', listener2); 

/* 
* Prioritize the listeners here: I would like to have `listener2` 
* called before `listener1`. 
*/ 
// 
// 

JSFiddle here.

ответ

1

Определить один прослушиватель событий с помощью функции обертки, которая вызывает две функции так, как вы хотите, например.

google.maps.event.addListener(map, 'idle', function() { 
    listener2(); 
    listener1(); 
}); 

В качестве альтернативы, я подозреваю, что есть что-то более сложное, что вы не даете нам знать о вашем вопросе. В этом случае вы можете добавить каждую функцию в массив, возможно, с приоритетом. Затем проведите цикл через массив в вашем прослушивателе событий.

var listeners = []; 

var listener1 = function() { 
    console.log('@listener1'); 
}, 
listener2 = function() { 
    console.log('@listener2'); 
}; 

listeners.push(listener2); 
listeners.push(listener1); 

google.maps.event.addListener(map, 'idle', function() { 
    for (var i = 0; i < listeners.length; i++) { 
     listeners[i](); 
    } 
}); 
Смежные вопросы