如果Javascript事件被触发一次然后在一段时间内没有被再次触发,该如何响应它?

Flo*_*nt2 11 javascript google-maps dom-events

在我的应用程序中,我听取了Google Maps API的'bounds_changed'事件,发送ajax请求来更新网页上的某些div,具体取决于地图的新边界:

google.maps.event.addListener(map, 'bounds_changed', function() {
  // here goes an ajax call
}
Run Code Online (Sandbox Code Playgroud)

当用户拖动地图时,会以高频率触发事件'bounds_changed'.太多了,发送到服务器的ajax请求太多了.

基本上我只想在用户停止在一段时间内移动地图(例如500ms)之后才进行ajax调用.我对Javascript没有很多经验,并尝试使用setTimeout和clearTimeout实现这一点,但没有成功.

任何想法将不胜感激:)

Bre*_*ker 12

添加一个超时,在事件触发后500ms运行代码,每次事件触发清除超时并创建一个新超时.

例如.

google.maps.event.addListener(map, 'bounds_changed', (function () {
    var timer;
    return function() {
        clearTimeout(timer);
        timer = setTimeout(function() {
            // here goes an ajax call
        }, 500);
    }
}()));
Run Code Online (Sandbox Code Playgroud)