Throttling — это техника, которая ограничивает частоту выполнения функции — гарантирует, что она выполнится не более одного раза в течение заданного временного интервала, независимо от того, сколько раз её вызовут.
function throttle(fn, interval) {
let lastTime = 0;
return function (...args) {
const now = Date.now();
if (now - lastTime >= interval) {
lastTime = now;
fn.apply(this, args);
}
};
}
lastTime отслеживает временную метку последнего выполнения, инициализируется 0, поэтому первый вызов всегда выполняется сразуDate.now() фиксирует текущую временную меткуnow - lastTime >= intervallastTime обновляется при каждом успешном выполнении, чтобы сбросить таймерfn.apply(this, args) сохраняет корректный контекст this и передаёт все аргументыlastTime сохраняется между вызовами, потому что живёт в области видимости внешней функцииDate.now() — возвращает текущее время в миллисекундах, используется для сравнения времени...args / apply — гарантирует, что throttled функция ведёт себя идентично исходнойВ функции throttle переменная lastTime инициализируется значением 0, чтобы гарантировать, что первый вызов функции выполнится сразу же без ожидания истечения интервала.
Новый — ещё не проверен сообществом
Вы