Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej

Czym jest debounce w JavaScript i dlaczego jest to ważne?

Okładka posta: Czym jest debounce w JavaScript i dlaczego jest to ważne?
Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
Jeśli kiedykolwiek pracowałeś z wydarzeniami w JavaScript, takimi jak scroll, resize czy keyup, to prawdopodobnie zauważyłeś, że mogą one być wywoływane bardzo często. Na przykład, podczas wpisywania tekstu w polu wyszukiwania, zdarzenie keyup może być wywoływane po każdym naciśnięciu klawisza. Może to stworzyć dodatkowe obciążenie dla przeglądarki lub serwera, szczególnie jeśli każde wywołanie wykonuje zapytanie do API.
Aby uniknąć takich problemów, stosuje się debounce — technikę, która ogranicza częstotliwość wywołań funkcji, opóźniając jej wykonanie do momentu, gdy zdarzenie przestanie się powtarzać przez określony czas.

Jak działa debounce?

Idea jest prosta: gdy zdarzenie jest wyzwalane, odkładamy wykonanie funkcji na określony czas. Jeśli zdarzenie jest wyzwalane ponownie przed upływem tego czasu, timer jest resetowany, a odliczanie zaczyna się od nowa. Tylko gdy zdarzenie ustaje, funkcja jest wykonywana.

Przykład debounce w JavaScript

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

// Użycie debounce do obsługi zdarzenia wprowadzania tekstu
const input = document.querySelector("#search");
const handleInput = (event) => {
  console.log("Szukaj: ", event.target.value);
};

input.addEventListener("keyup", debounce(handleInput, 500));
W tym przykładzie każde wprowadzenie w polu wyszukiwania aktualizuje timer, a tylko po 500ms bez nowego wprowadzenia wykonywana jest funkcja handleInput.

Gdzie używać debounce?

  • Zapytania wyszukiwania — aby nie wysyłać zapytań do serwera przy każdym naciśnięciu klawisza.
  • Obsługa zmiany rozmiaru okna (resize) — aby nie przeciążać przeglądarki obliczeniami.
  • Słuchacze zdarzeń scroll — na przykład, do ładowania nowej zawartości podczas przewijania (nieskończone przewijanie / endless scroll).
  • Automatyczne zapisywanie formularzy — aby zapisywać dane tylko po zakończeniu wprowadzania.
  • Walidacja formularzy - na przykład, do sprawdzania dostępności nicku.
Debounce pomaga zoptymalizować wydajność, zmniejszając liczbę wywołań funkcji, które są często wyzwalane. Jest to szczególnie przydatne przy pracy z częstymi zdarzeniami, takimi jak wprowadzanie tekstu, przewijanie czy zmiana rozmiaru okna. Używając debounce, można poprawić interakcję z użytkownikiem i zmniejszyć obciążenie systemu.

Ten post nie ma jeszcze żadnych dodatków od autora.

Wirtualny serwer chmurowy: czym jest i jaka jest jego specyfika
3 sty 10:58

Wirtualny serwer chmurowy: czym jest i jaka jest jego specyfika

meme code
meme code@memecode
[Fix] Heroku / SearchBox addon - błąd indeksowania "Klient nie może zweryfikować, że serwer to Elasticsearch"
31 sty 13:09

[Fix] Heroku / SearchBox addon - błąd indeksowania "Klient nie może zweryfikować, że serwer to Elasticsearch"

meme code
meme code@memecode
6 lut 15:31

Poprawka błędu [DEPRECATION] #adapters jest przestarzałe. Użyj zamiast tego #profiles. (Codecov / docile)

meme code
meme code@memecode
Czym jest Promise w JavaScript i jak szybko zrozumieć jego istotę?
18 lut 11:01

Czym jest Promise w JavaScript i jak szybko zrozumieć jego istotę?

meme code
meme code@memecode
Struktura Promise (JavaScript) i jak z tym pracować
18 lut 14:33

Struktura Promise (JavaScript) i jak z tym pracować

meme code
meme code@memecode
Czym jest memoizacja (przykłady Ruby i Ruby on Rails)?
20 lut 18:16

Czym jest memoizacja (przykłady Ruby i Ruby on Rails)?

meme code
meme code@memecode
Co to jest CFB (Cipher Feedback)?
21 mar 16:53

Co to jest CFB (Cipher Feedback)?

meme code
meme code@memecode
Co to jest XOR i jak to działa?
21 mar 17:05

Co to jest XOR i jak to działa?

meme code
meme code@memecode
Programowanie wbudowane: co to jest i od czego zacząć
24 mar 16:48

Programowanie wbudowane: co to jest i od czego zacząć

meme code
meme code@memecode
Pessimistic Lock w Rails: co to jest i kiedy stosować. Jakie są alternatywy?
31 mar 17:45

Pessimistic Lock w Rails: co to jest i kiedy stosować. Jakie są alternatywy?

meme code
meme code@memecode
Dlaczego PostgreSQL pomija ID podczas zapisywania nowych rekordów? (Heroku)
31 mar 19:13

Dlaczego PostgreSQL pomija ID podczas zapisywania nowych rekordów? (Heroku)

meme code
meme code@memecode
[Codecov] Jaka jest różnica między pokryciem patch a pokryciem projektu?
9 kwi 16:03

[Codecov] Jaka jest różnica między pokryciem patch a pokryciem projektu?

meme code
meme code@memecode