JavaScript - Parar timeout si se esta ejecutando

 
Vista:
Imágen de perfil de Jorge

Parar timeout si se esta ejecutando

Publicado por Jorge (6 intervenciones) el 16/10/2021 19:58:36
Hola! me gustaría detener un timeout si este se inicio pero no llego al tiempo estimado.

Lo que tengo es esto:

1
2
3
4
5
6
7
8
9
10
keyuser.addEventListener("keyup", function(e){;
 
  clearTimeout(timersend);
 
 var timersend = window.setTimeout(send,5000);
 
function send() {
	alert("hello");
}
});

A pesar del clearTimeout, si tecleo 4 veces seguidas, a los 5 segundos me saltan los 4 alerts y me gustaría que saltara uno.

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de algoritmo
Val: 37
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Parar timeout si se esta ejecutando

Publicado por algoritmo (29 intervenciones) el 17/10/2021 21:27:52
Hola

Puedes incorporar una variable que controle si se ha lanzado.

Ejemplo:

1
2
3
4
5
6
7
alerta = false;
function send() {
  if (alerta == false){
	alert("hello");
        alerta = true;
  }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jaime
Val: 60
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Parar timeout si se esta ejecutando

Publicado por Jaime (30 intervenciones) el 19/10/2021 13:03:44
Lo que pasa amigo, es que estas redeclarando la variable timersend.
Debes declarar una sola vez la variable timersend, fuera del linester y en el listener asignarle el settimeout

1
2
3
4
5
6
7
8
9
var timersend;
keyuser.addEventListener("keyup", function(e){;
 
   clearTimeout(timersend);
   timersend = window.setTimeout(send,5000);
   function send() {
	alert("hello");
}
});
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar