Cómo necesito:
Por qué necesito (de esta manera):
Tengo una gran base de datos de registros y uso el método ajax para buscar. Cada vez que se activa la tecla (entrada de búsqueda) se envía una solicitud... (es un desperdicio de recursos e incómodo ver cómo la página actualiza cada tecla). Entonces, mi forma es crear una "fase de escritura" , lo que quiero decir descrito anteriormente.
¡Solo JS puro , sin bibliotecas! Gracias.
lo que necesitas se llama función de rebote.
si no usa bibliotecas como lodash, puede darse cuenta de esto:
function debounce(f, ms) { let isCooldown = false; return function() { if (isCooldown) return; f.apply(this, arguments); isCooldown = true; setTimeout(() => isCooldown = false, ms); }; }entonces puedes codificar así:
const handleSearch = (search) => { // your logic with fetch or whatever } const handleSearchDebounced = debounce(handleSearch, 300) var timer=null; document.getElementById("myInput").onkeyup = ()=>{ clearInterval(timer); timer = setInterval(()=>{ console.log("call ajax search function here."); clearInterval(timer); },1000); }; <input type="text" id="myInput">