У меня следующая проблема:
Я использую Карты Google на своем сайте. Я прикрепил следующий EventListener к самой карте:
google.maps.event.addListener(map, 'bounds_changed', scheduleDelayedCallback);
Событие bounds_changed вызывается каждый раз, когда кто-то перетаскивает карту. Моя проблема в том, что он вызывается несколько раз в процессе перетаскивания. Теперь мне нужно найти способ вызывать только функцию обратного вызова, если она не вызывалась в течение, скажем, 750 миллисекунд.
Я сделал это с помощью этих двух функций:
function fireIfLastEvent() {
var now = new Date().getTime();
if (lastEvent.getTime() + 750 <= now) {
this_function_needs_to_be_delayed();
} else {
$("#main").html('Lade...');
}
}
function scheduleDelayedCallback() {
lastEvent = new Date();
setTimeout(fireIfLastEvent, 750);
}
Этот метод прекрасно работает в Chrome и Opera. В IE он иногда работает, в Firefox он никогда не работает (он вызывает функции, даже если прошло 750 миллисекунд).
Есть ли надежный способ тайм-аута вызова функции?
Спасибо.