检测事件回调的开始和结束?

时间:2012-08-09 10:46:32

标签: javascript events callback mapbox

我正在使用新的mapbox.js API,尤其是事件回调'panned'。当用户移动地图时,回调被触发大约50-100次,这太过分了。只获得第一个和最后一个事件(或仅仅是最后一个)的最佳方法是什么?

map.addCallback('panned', function(move) {
  console.log('panned');
});

2 个答案:

答案 0 :(得分:3)

使用.setTimeout:

var timeout = null;
map.addCallback('panned', function (move) {
    timeout && window.clearTimeout(timeout);
    timeout = window.setTimeout(function () {
        console.log('panned')
    }, 100)
})

对于超时时间选择一个合适的时间,你必须通过摆弄几个值来找到它。

答案 1 :(得分:0)

UnderscoreJS有一些有用的功能。

根据您描述的内容,

Debounce 可能最适合您: ...将其执行推迟到自上次调用以来等待毫秒后

"Throttle" 也很有用:“...每隔几毫秒才会实际调用一次原始函数。对于速度限制事件更快你可以跟上。“

HTH