Дебадинг на основе скорости прокрутки - PullRequest
0 голосов
/ 18 марта 2019

У меня есть функция 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 пикселей прокрутки.

В контексте этого вопроса я хочу сделать более плавный пользовательский интерфейс, чтобы при быстрой прокрутке обработчик прокрутки реагировал интуитивно.

...