我正在使用新的mapbox.js API,尤其是事件回调“平移”。当用户移动地图时,回调会触发大约 50-100 次,这太过分了。从中获得第一个和最后一个事件(或仅最后一个)的最佳方法是什么?
map.addCallback('panned', function(move) {
console.log('panned');
});
我正在使用新的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有一些有用的功能。
根据您的描述,去抖动可能最适合您: ...将其执行推迟到自上次调用以来等待毫秒过去之后
“Throttle”也很有用: “......实际上每等待毫秒最多只会调用一次原始函数。对于发生得比你跟上更快的速率限制事件很有用。”
高温高压