JavaScript de Cero a Experto / Proyectos + retos
Reto de entrevista: throttle (controlar el caudal)
Un evento que se dispara cientos de veces por segundo —el scroll, el
resize— puede ahogar tu app si reaccionas a cada uno. throttle es la
válvula que limita el caudal: deja pasar la función como máximo una vez cada X
milisegundos. Con el patrón decorador del reto anterior y un temporizador,
construyes una herramienta que usan todas las apps serias.
Reto
throttle: una vez cada X
Qué debes construir
Una función throttle(fn, ms) que devuelva una versión "estrangulada" de fn:
por más veces que la llames, se ejecuta como máximo una vez cada ms
milisegundos. La primera llamada pasa de inmediato; las siguientes se ignoran
hasta que pase el tiempo.
Reglas
- La primera llamada se ejecuta YA (comportamiento leading edge).
- Durante la ventana de
ms, las llamadas extra se ignoran. - Pasado
ms, la siguiente llamada vuelve a pasar. - Pasa las comprobaciones del playground.
20:00
Cuando estés listo, arranca el reloj.
Qué sigue
El jefe final. throttle deja pasar a ritmo constante; su hermano debounce
hace lo opuesto: ESPERA a que dejes de disparar y entonces actúa UNA vez. Es el
que usaste en el buscador, el que blinda toda barra de búsqueda del mundo —y el
cierre perfecto para el supercurso de JavaScript.