我在这里具有防抖功能:
function debounce(func, interval) {
var timeout;
return function () {
var context = this, args = arguments;
var later = function () {
timeout = null;
func.apply(context, args);
};
clearTimeout(timeout);
timeout = setTimeout(later, interval || 200);
};
}
此去抖动功能的默认行为是基于时间运行。如果传递给它的函数的调用速率大于传递给它的间隔的速率,则仅将调用尾部边缘。
我想知道是否可以重构此函数,因此它不是基于时间间隔来限制函数调用,而是根据滚动像素数来限制。基本上,此功能将允许随时间变化的去抖动,而不是恒定的去抖动。例如,无论我滚动多快,都只允许函数每滚动5个像素运行一次。
此问题的上下文是我想使界面更平滑,以便在快速滚动时,滚动处理程序可以直观地响应。