De alguna manera mi mismo cerró, porque la pregunta no estaba clara para todos. Estoy repitiendo la misma pregunta. Aquí tengo este campo input cuando el usuario está escribiendo. Llamo a la function handleMessagePress(e) continuamente, y cuando el usuario deja de typing , llamo a stop() function después de cinco segundos. Pero mi pregunta es cuando el usuario comienza a escribir, necesito llamar a la handleMessagePress(e) function solo una vez y esperar 5 seconds y si el usuario todavía está escribiendo, la misma function debería llamarse automáticamente; de lo contrario, la stop function debería llamarse automáticamente. En palabras más simples, después de 5 segundos, mi programa debería poder verificar que el usuario esté escribiendo o no, si el usuario está escribiendo o no si está escribiendo, llame a handleMessagePress(e) , de lo contrario, llame a stop function automáticamente.
<input placeholder="type your message" id="messageInputField" onKeyPress={(e) => handleMessagePress(e)}/> let myInput = document.getElementById("messageInputField"); let timer; if (myInput) { myInput.addEventListener("keyup", () => { clearTimeout(timer); timer = setTimeout(stop, 5000); }); } const stop=()=>{ console.log("user stop typing"); } const handleMessagePress = (e) => { console.log("user is typing"); } let myInput = document.getElementById("messageInputField"); let timer; let executeHandlePress = true; // flag to watch handle press function execution if (myInput) { myInput.addEventListener("keyup", () => { clearTimeout(timer); timer = setTimeout(stop, 5000); }); } const stop=()=>{ console.log("user stop typing"); } const handleMessagePress = (e) => { if(!executeHandlePress){ // if flag false, return return; } console.log("user is typing"); // if true execute executeHandlePress = false; // toggle flag to false setTimeout(()=>{ executeHandlePress = true; // reset after 5 seconds }, 5000); } <input placeholder="type your message" id="messageInputField" onKeyPress=" handleMessagePress(event)" />