Если вы ищете сущность дросселирования и отформации, и у вас нет много времени, чтобы пощадить, вы пришли на правильное место! 🔥
Вы можете использовать оба этих хитрости оптимизации для уменьшения количества вызовов функций в ответ на события, которые часто огонь.
Давайте прыгнем прямо к примеру.
0
let count = 0 const btn = document.querySelector('#btn') btn.addEventListener('click', handleClick, false) function handleClick() { const counter = document.querySelector('#count') counter.innerHTML = ++count }
Как вы замечаете, мы можем увеличить количество, нажав кнопку.
Мы можем идти медленно и время от времени нажать кнопку. Или мы можем пойти на скорость света и максимально ударить кнопку.
В обоих сценариях код в обработчике будет работать каждый раз, когда мы нажимаем кнопку. Итак, давайте рассмотрим это как наш базовый уровень.
Представьте, что мы хотим оптимизировать эту функциональность.
Давайте изменим наш код, чтобы использовать отчаяние.
let count = 0, timer = null const btn = document.querySelector('#btn') btn.addEventListener('click', handleClick, false) function handleClick() { if (timer) { clearTimeout(timer) } timer = setTimeout(() => { const counter = document.querySelector('#count') counter.innerHTML = ++count }, 3000) }
Теперь, независимо от того, как часто мы нажимаем кнопку, обработчик увеличит счет только через три секунды после того, как мы перестали ударить кнопку.
Итак, DEBOUNCE – это когда вы выполняете код только после определенного периода некоторого события останавливают стрельбу.
Этот трюк может помочь обрабатывать пользовательский ввод. E.G., мы можем отправить HTTP-запрос не на каждом нажатии на клавиш, но только когда пользователь останавливает набрав.
Теперь давайте посмотрим на дросселирование.
let count = 0, timer = null const btn = document.querySelector('#btn') btn.addEventListener('click', handleClick, false) function handleClick() { if (timer) return timer = setTimeout(() => { const counter = document.querySelector('#count') counter.innerHTML = ++count timer = null }, 3000) }
В этом случае независимо от того, как часто мы нажимаем кнопку, обработчик увеличит счет только один раз за три секунды.
Таким образом, дросселирование – это при выполнении кода на регулярном интервале во время некоторого события.
Вы можете использовать его для оптимизации обработки события прокрутки.
Там у вас есть! Я надеюсь, что я спас тебе некоторое время погубин.
Спасибо за чтение! 😜
Оригинал: “https://dev.to/jkorum/the-shortest-explanation-of-debouncing-throttling-in-javascript-4epb”