Debounce: no llames al modelo en cada tecla
Un autocompletado que lanza un prompt por tecla satura el servidor. Espera a que el usuario pare de escribir.
Escribe debounce(fn, ms). Devuelve una función nueva que, cada vez que se llama, reinicia un temporizador de ms milisegundos. Solo cuando pasan ms sin llamadas nuevas se ejecuta fn, una vez y con los argumentos de la última llamada.
Ya tienes wait(ms), que devuelve una promesa que se resuelve tras ms milisegundos.
Retos 0/4
- Una ráfaga de llamadas ejecuta fn una sola vez
- Usa los argumentos de la última llamada
- No se ejecuta antes de que pase el tiempo
- Dos ráfagas separadas ejecutan fn dos veces
function debounce(fn, ms) {
// en cada llamada, cancela el temporizador anterior y arranca uno nuevo
return (...args) => fn(...args);
}
const suggest = debounce((text) => console.log('prompt:', text), 20);
suggest('h');
suggest('ho');
suggest('hola');La consola aparece aquí (console.log).
Para profundizar: la referencia de MDN (en inglés) →
¿Esto en producción, con tus datos? Hablemos 15 minutos →