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

Detect start and end of an event callback?

本文关键字:结束 开始 事件 回调 检测      更新时间:2023-09-26

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

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

使用 .setTimeout:

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

对于超时时间,请选择适当的时间,您必须通过摆弄几个值来找出该时间。

UnderscoreJS有一些有用的函数。

根据您所描述的内容,去抖动可能最适合您:...将其执行推迟到自上次调用以来经过等待毫秒之后

"油门"也很有用:"...实际上,每等待一毫秒最多调用一次原始函数。对于发生速度快于您跟上速度的速率限制事件很有用。