Google Maps JS API v3.x - 优先考虑事件监听器

时间:2015-09-02 15:05:07

标签: javascript google-maps google-maps-api-3

我想知道是否有一种微妙的方式以某种方式确定事件监听器的优先级,即改变他们被调用的顺序, 而不用更改他们所添加的顺序< / strong>即可。片段:

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 个答案:

答案 0 :(得分: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]();
    }
});