У меня есть функция debounce здесь:
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 пикселей прокрутки.
В контексте этого вопроса я хочу сделать более плавный пользовательский интерфейс, чтобы при быстрой прокрутке обработчик прокрутки реагировал интуитивно.