Debounce vs throttle, gevisualiseerd

Debounce vs throttle visualisatie

Debounce vs throttle in JavaScript, gevisualiseerd | We.Inc

Beweeg uw pointer over het vlak en zie ruwe events, gedebouncede aanroepen en gethrottlede aanroepen op één tijdlijn. Debounce- en throttle-functies om te kopiëren, plus React-hooks.

Debounce wacht tot aanroepen een ingestelde tijd stoppen en draait dan één keer, wat past bij zoekvelden en automatisch opslaan. Throttle draait hooguit één keer per interval zolang er aanroepen blijven komen, wat past bij scrollen, resizen en het volgen van de pointer. Beide nemen een functie en een vertraging in milliseconden, en geven een verpakte functie terug die u in plaats daarvan aanroept.

Welke u gebruikt

De twee woorden worden door elkaar gehaald omdat ze allebei beperken hoe vaak een functie draait. Het vlak hieronder toont het verschil op een gedeelde tijdlijn: elk ruw event als een dun streepje, elke gedebouncede en elke gethrottlede aanroep als een stip. Wijzig de vertraging en het patroon verandert mee.

Veelgestelde vragen

Wat is het verschil tussen debounce en throttle?

Debounce start zijn timer bij elke aanroep opnieuw en draait pas wanneer de aanroepen pauzeren. Throttle negeert aanroepen binnen het huidige venster, maar draait opnieuw zodra het venster voorbij is, dus het gaat gelijkmatig af tijdens een lange reeks.

Wat zijn leading en trailing edges?

De leading edge is de eerste aanroep van een reeks; de trailing edge is het moment waarop het interval van de reeks eindigt. Een trailing debounce draait na de pauze, een leading debounce draait meteen en negeert daarna aanroepen tot de pauze. Throttles kunnen op een van beide edges afgaan, of op allebei.

Heb ik lodash nodig voor debounce?

Nee. De functies op deze pagina zijn elk maar een paar regels. Een bibliotheekversie voegt opties toe zoals maxWait, cancel en flush, die handig zijn maar makkelijk zelf toe te voegen als u er maar één van nodig hebt.

Hoe lang moet de vertraging zijn?

Er is niet één juist getal. Begin rond 300 milliseconden voor typen en 100 voor scroll- of pointerwerk, en stel daarna bij op gevoel. Korter voelt responsiever, maar bespaart minder werk.

Hoe debounce werkt

Hoe throttle werkt

Versies in gewoon JavaScript

debounce(fn, wait)

Trailing edge. cancel() laat elke openstaande aanroep vallen.

throttle(fn, wait)

Draait op de leading edge en dan nog één keer aan het einde van het venster als er intussen aanroepen binnenkwamen, zodat de laatste waarde nooit verloren gaat.

React-hooks

useDebouncedCallback

Houdt één timer aan voor de hele levensduur van het component, roept altijd de nieuwste callback aan, en wist de timer bij unmount.

useThrottledValue

Geeft een kopie terug van een snel veranderende waarde die hooguit één keer per interval wordt bijgewerkt.

Ruwe events

Gedebounced ({n} ms)

Gethrottled ({n} ms)

Visualisatie

Beweeg over het vlak. Dunne streepjes zijn ruwe events; stippen zijn aanroepen die na debouncen of throttlen echt zijn uitgevoerd.

Vertraging: {n} ms

Eventvlak: beweeg de pointer hier of houd een toets ingedrukt

Beweeg hier (of geef focus en houd een toets ingedrukt)

De tijdlijn toont de laatste zes seconden; de getallen tellen de aanroepen in dat venster.

Wissen

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap