Debounce vs Throttle, in Forma Visiva

Visualizzatore Debounce vs Throttle

Debounce vs Throttle in JavaScript, in Forma Visiva | We.Inc

Muovi il puntatore sul pad e osserva eventi grezzi, chiamate con debounce e chiamate con throttle sulla stessa timeline. Funzioni debounce e throttle da copiare, più hook React.

Il debounce aspetta che le chiamate si fermino per un tempo stabilito, poi esegue una volta sola, ed è adatto a caselle di ricerca e salvataggio automatico. Il throttle esegue al massimo una volta per intervallo mentre le chiamate continuano ad arrivare, ed è adatto a scroll, resize e tracciamento del puntatore. Entrambi ricevono una funzione e un ritardo in millisecondi e restituiscono una funzione avvolta da chiamare al posto dell'originale.

Quale usare

I due termini si confondono perché entrambi riducono la frequenza con cui una funzione viene eseguita. Il pad qui sotto mostra la differenza su una timeline condivisa: ogni evento grezzo come una tacca sottile, ogni chiamata con debounce e ogni chiamata con throttle come un punto. Cambia il ritardo e lo schema cambia con lui.

Domande frequenti

Qual è la differenza tra debounce e throttle?

Il debounce riavvia il timer a ogni chiamata ed esegue solo quando le chiamate si fermano. Il throttle ignora le chiamate dentro la finestra corrente ma esegue di nuovo appena la finestra è passata, quindi scatta con regolarità durante una lunga raffica.

Cosa sono leading edge e trailing edge?

Il leading edge è la prima chiamata di una raffica; il trailing edge è il momento in cui finisce l'intervallo della raffica. Un debounce trailing esegue dopo la pausa, uno leading esegue subito e poi ignora le chiamate fino alla pausa. I throttle possono scattare su uno dei due edge o su entrambi.

Mi serve lodash per il debounce?

No. Le funzioni in questa pagina sono di poche righe ciascuna. Una versione di libreria aggiunge opzioni come maxWait, cancel e flush, comode ma facili da aggiungere da solo se te ne serve solo una.

Quanto deve durare il ritardo?

Non esiste un unico numero giusto. Parti da circa 300 millisecondi per la digitazione e 100 per scroll o puntatore, poi regola a sensazione. Più breve sembra più reattivo ma fa risparmiare meno lavoro.

Come funziona il debounce

Come funziona il throttle

Versioni in JavaScript puro

debounce(fn, wait)

Trailing edge. cancel() elimina qualsiasi chiamata in sospeso.

throttle(fn, wait)

Esegue sul leading edge, poi ancora una volta alla fine della finestra se nel frattempo sono arrivate chiamate, così l'ultimo valore non va mai perso.

Hook React

useDebouncedCallback

Mantiene un solo timer per tutta la vita del componente, chiama sempre la callback più recente e cancella il timer allo smontaggio.

useThrottledValue

Restituisce una copia di un valore che cambia rapidamente, aggiornata al massimo una volta per intervallo.

Eventi grezzi

Con debounce ({n} ms)

Con throttle ({n} ms)

Visualizzatore

Muoviti sul pad. Le tacche sottili sono eventi grezzi; i punti sono chiamate effettivamente eseguite dopo debounce o throttle.

Ritardo: {n} ms

Pad degli eventi: muovi qui il puntatore o tieni premuto un tasto

Muoviti qui (o dai il focus e tieni premuto un tasto)

La timeline mostra gli ultimi sei secondi; i numeri contano le chiamate in quella finestra.

Cancella

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito