Ya conocimos los procesos de JavaScript en su Event Loop y justamente para no saturarlo tenemos estas 2 herramientas con las que evitar llenar las colas con en eventos en que caso que no sea necesario.

En principio vamos explicar que hace Throttle

Con este método llamaremos a una función en intervalos de tiempo delimitados por nosotros mientras el usuario esté realizando alguna acción, por ejemplo haciendo scroll en la página.

Por otra parte Debounce

Se usa para lanzar una función y evitar duplicidad en un periodo determinado de tiempo, por ejemplo evitar el doble click sobre un botón.

Throttle vs Debounce in scroll event

Diferencia de Throttle vs Debounce con un ejemplo

Vemos como sería el código para implementar ambas soluciones. Ya debería estar familiarizados con los callbacks.

let throttlePause;

const throttle = (callback, time) => {
    if (throttlePause) return;

    throttlePause = true;
    setTimeout(() => {
        callback();
        throttlePause = false;
    }, time);
};
let debounceTimer;

const debounce = (callback, time) => {
    window.clearTimeout(debounceTimer);
    debounceTimer = window.setTimeout(callback, time);
};

En el articulo que me he basado para desarrollar el mio encontramos este ejemplo donde vemos un contador con el número de eventos que lanzamos usando cada una de las soluciones.

¿Sabes cual es la importancia de usar Throttle y Debounce?

Especialmente en aplicaciones o web que implementemos animaciones debemos tener en consideración las ejecuciones que haga con respecto a la interacción del usuario. Por eso es importante medir, analizar y minimizar el coste de esfuerzos para el navegador y así optimizar su rendimiento.

Specialist Software Developer Lead

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Instagram