Debounce vs throttle na wizualizacji

Wizualizacja debounce vs throttle

Debounce vs throttle w JavaScript na wizualizacji | We.Inc

Poruszaj kursorem nad polem i obserwuj surowe zdarzenia, wywołania po debounce i wywołania po throttle na jednej osi czasu. Gotowe do skopiowania funkcje debounce i throttle oraz hooki React.

Debounce czeka, aż wywołania ustaną na określony czas, a potem uruchamia się raz, co pasuje do pól wyszukiwania i autozapisu. Throttle uruchamia się najwyżej raz na interwał, dopóki wywołania napływają, co pasuje do przewijania, zmiany rozmiaru i śledzenia wskaźnika. Obie przyjmują funkcję i opóźnienie w milisekundach i zwracają opakowaną funkcję, którą wywołujesz zamiast oryginału.

Której użyć

Te dwa pojęcia są mylone, bo oba ograniczają częstotliwość uruchamiania funkcji. Pole poniżej pokazuje różnicę na wspólnej osi czasu: każde surowe zdarzenie jako cienką kreskę, a każde wywołanie po debounce i po throttle jako kropkę. Zmień opóźnienie, a wzór zmieni się razem z nim.

Najczęściej zadawane pytania

Czym różni się debounce od throttle?

Debounce restartuje swój timer przy każdym wywołaniu i uruchamia się dopiero, gdy wywołania ustaną. Throttle ignoruje wywołania w bieżącym oknie, ale uruchamia się ponownie, gdy tylko okno minie, więc działa równomiernie podczas długiej serii.

Czym są leading edge i trailing edge?

Leading edge to pierwsze wywołanie serii; trailing edge to moment, w którym kończy się interwał serii. Debounce na trailing edge uruchamia się po przerwie, a na leading edge od razu, po czym ignoruje wywołania aż do przerwy. Throttle może działać na jednej z krawędzi lub na obu.

Czy do debounce potrzebuję lodash?

Nie. Funkcje na tej stronie mają po kilka linii. Wersja z biblioteki dodaje opcje takie jak maxWait, cancel i flush, które są przydatne, ale łatwo dodać je samemu, jeśli potrzebujesz tylko jednej z nich.

Jak długie powinno być opóźnienie?

Nie ma jednej właściwej liczby. Zacznij od około 300 milisekund dla pisania i 100 dla przewijania lub wskaźnika, a potem dostosuj na wyczucie. Krótsze opóźnienie daje szybszą reakcję, ale oszczędza mniej pracy.

Jak działa debounce

Jak działa throttle

Wersje w czystym JavaScript

debounce(fn, wait)

Trailing edge. cancel() odrzuca każde oczekujące wywołanie.

throttle(fn, wait)

Uruchamia się na leading edge, a potem jeszcze raz na końcu okna, jeśli w międzyczasie napłynęły wywołania, więc ostatnia wartość nigdy nie ginie.

Hooki React

useDebouncedCallback

Utrzymuje jeden timer przez cały cykl życia komponentu, zawsze wywołuje najnowszy callback i czyści timer przy odmontowaniu.

useThrottledValue

Zwraca kopię szybko zmieniającej się wartości, która aktualizuje się najwyżej raz na interwał.

Surowe zdarzenia

Debounce ({n} ms)

Throttle ({n} ms)

Wizualizacja

Poruszaj się nad polem. Cienkie kreski to surowe zdarzenia; kropki to wywołania, które faktycznie się wykonały po debounce lub throttle.

Opóźnienie: {n} ms

Pole zdarzeń: przesuń tu wskaźnik lub przytrzymaj klawisz

Poruszaj się tutaj (lub ustaw fokus i przytrzymaj klawisz)

Oś czasu pokazuje ostatnie sześć sekund; liczby zliczają wywołania w tym oknie.

Wyczyść

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony