ГоловнаВсі публікаціїКатегоріїПро проєкт

Що таке debounce у JavaScript і чому це важливо?

Обкладинка нотатки: Що таке debounce у JavaScript і чому це важливо?
Зміст дописунатисність на посилання, щоб перейти до потрібного місця
Якщо ви коли-небудь працювали з подіями в JavaScript, наприклад, scroll, resize чи keyup, то, ймовірно, помічали, що вони можуть викликатися дуже часто. Наприклад, під час введення тексту в поле пошуку подія keyup може спрацьовувати після кожного натискання клавіші. Це може створити зайве навантаження на браузер або сервер, особливо якщо кожен виклик виконує запит до API.
Щоб уникнути таких проблем, використовують debounce — техніку, яка обмежує частоту викликів функції, затримуючи її виконання до моменту, коли подія перестане повторюватися протягом заданого часу.

Як працює debounce?

Ідея проста: коли подія тригериться, ми відкладаємо виконання функції на певний проміжок часу. Якщо подія тригериться знову до завершення цього часу, таймер скидається і відлік починається заново. Лише коли подія припиняється, функція виконується.

Приклад debounce у JavaScript

function debounce(func, delay) {
  let timeout;
  return function (...args) {
    clearTimeout(timeout);
    timeout = setTimeout(() => func.apply(this, args), delay);
  };
}

// Використання debounce для обробки події введення тексту
const input = document.querySelector("#search");
const handleInput = (event) => {
  console.log("Пошук: ", event.target.value);
};

input.addEventListener("keyup", debounce(handleInput, 500));
У цьому прикладі кожне введення в поле пошуку оновлює таймер, і лише після 500мс без нового введення виконується handleInput.

Де використовувати debounce?

  • Пошукові запити — щоб не відправляти запити на сервер при кожному натисканні клавіші.
  • Обробка зміни розміру вікна (resize) — щоб не перевантажувати браузер обчисленнями.
  • Слухачі подій scroll — наприклад, для завантаження нового контенту при прокрутці (безкінечний скрол / endless scroll).
  • Автозбереження форм — щоб зберігати дані тільки після завершення введення.
  • Валідація форм - наприклад, для перевірки вільного нікнейму.
Debounce допомагає оптимізувати продуктивність, зменшуючи кількість викликів функцій, які часто тригеряться. Це особливо корисно при роботі з частими подіями, такими як введення тексту, скролінг чи зміна розміру вікна. Використовуючи debounce, можна покращити взаємодію з користувачем і зменшити навантаження на систему.
Віртуальний хмарний сервер: що це таке та в чому його особливість
03.01.2025 10:58

Віртуальний хмарний сервер: що це таке та в чому його особливість

meme code
meme code@memecode
[Fix] Heroku / SearchBox addon - помилка ідексації "The client is unable to verify that the server is Elasticsearch"
31.01.2025 13:09

[Fix] Heroku / SearchBox addon - помилка ідексації "The client is unable to verify that the server is Elasticsearch"

meme code
meme code@memecode
06.02.2025 15:31

Фікс помилки [DEPRECATION] #adapters is deprecated. Use #profiles instead. (Codecov / docile)

meme code
meme code@memecode
Що таке Promise у JavaScript і як швидко зрозуміти суть?
18.02.2025 11:01

Що таке Promise у JavaScript і як швидко зрозуміти суть?

meme code
meme code@memecode
Структура Promise (JavaScript) та як з цим працювати
18.02.2025 14:33

Структура Promise (JavaScript) та як з цим працювати

meme code
meme code@memecode
Що таке Memoization (приклади Ruby та Ruby on Rails)?
20.02.2025 18:16

Що таке Memoization (приклади Ruby та Ruby on Rails)?

meme code
meme code@memecode
Що таке CFB (Cipher Feedback)?
21.03.2025 16:53

Що таке CFB (Cipher Feedback)?

meme code
meme code@memecode
Що таке XOR і як він працює?
21.03.2025 17:05

Що таке XOR і як він працює?

meme code
meme code@memecode
Embed програмування: що це таке і з чого почати
24.03.2025 16:48

Embed програмування: що це таке і з чого почати

meme code
meme code@memecode
Pessimistic Lock у Rails: що це таке і коли застосовувати. Які є альтернативи?
31.03.2025 17:45

Pessimistic Lock у Rails: що це таке і коли застосовувати. Які є альтернативи?

meme code
meme code@memecode
Чому PostgreSQL пропускає ID при збережені нових записів? (Heroku)
31.03.2025 19:13

Чому PostgreSQL пропускає ID при збережені нових записів? (Heroku)

meme code
meme code@memecode