【发布时间】:2020-03-19 15:45:13
【问题描述】:
我尝试做这样的事情:
function throttle(fn, wait) {
var time = Date.now();
return function() {
if ((time + wait - Date.now()) < 0) {
fn();
time = Date.now();
}
}
}
function callback() {
//something
}
something.addEventListener("wheel", throttle(callback, 500));
当我使用鼠标滚轮时,它似乎工作得很好并且只触发一次。问题是当我使用 Macbook 的触摸板时,此事件会一次触发 1、2 或 3 次(取决于滑动的长度)。有什么问题?
【问题讨论】:
-
听上去,你希望这个事件只触发一次? ....
-
是的,每个时间跨度一次。更大的问题是为什么触摸板一次触发“滚轮”事件超过 1 次。
-
... 你有没有想过尝试以滚动事件为目标并改变你的“节流”逻辑?抱歉,我不确定您要达到什么目标,至少没有足够的信心提供答案。
-
另一个小问题,你熟悉setTimeout吗?
标签: javascript events throttling