Foros del Web » Programando para Internet » Javascript »

setInterval se ejecuta como setTimeout

Estas en el tema de setInterval se ejecuta como setTimeout en el foro de Javascript en Foros del Web. Hola chicos, estoy tratando de hacer que una función se ejecute cada medio segundo, de la siguiente manera: Código: function a() { alert('a'); } setInterval(a(), ...
  #1 (permalink)  
Antiguo 18/06/2011, 18:23
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 5
setInterval se ejecuta como setTimeout

Hola chicos, estoy tratando de hacer que una función se ejecute cada medio segundo, de la siguiente manera:
Código:
function a()
{
	alert('a');
}
setInterval(a(), 500);
¿Que ocurre? Pues que solo se ejecuta una vez, aparece el alert con el texto "a" y ya no vuelve a aparece mas..

¿A que puede deberse esta extraña situación?

¡Un saludo!
__________________
http://www.pkmrpg.es
  #2 (permalink)  
Antiguo 18/06/2011, 18:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 21 años, 11 meses
Puntos: 1284
Respuesta: setInterval se ejecuta como setTimeout

Hola:

Lo que puede pasar es que se aborte por detectar un error... y como respuesta a la pregunta del tema, la respuesta rotunda es "¡NO!"... setInterval solo se debe usar una vez y el tiempo se repite siempre (... siempre que no se abrte con clearInterval), y setTimeout solo se ejecuta una vez.

El posible error es que como primer parámetro no debes usar la función que quieres temporizar... vale esa función como una cadena (o sea entrecomillada), o como su nombre, pero sin el juego de paréntesis...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 18/06/2011, 19:46
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 6 meses
Puntos: 5
Respuesta: setInterval se ejecuta como setTimeout

Gracias caricatos!

El problema es que no entrecomillaba el primer argumento,

Un saludo!
__________________
http://www.pkmrpg.es
  #4 (permalink)  
Antiguo 19/06/2011, 12:00
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 10 meses
Puntos: 343
Respuesta: setInterval se ejecuta como setTimeout

Wait, tu problema no es que no usas las comillas sino que no estás entendiendo que recibe como argumento el setInterval.

El primer argumento es una funcion o un string a evaluar, en el codigo que posteaste estas llamando a la funcion setInterval con el RESULTADO de la funcion a (que es nada), con lo cual va a generar el alert inicial y luego nada.

En ese caso, usar las comillas NO ES la solución correcta, ya que estás forzando evaluación de código de manera innecesaria.

Solución correcta:

Código Javascript:
Ver original
  1. function a() {
  2.     alert('Hola');
  3. }
  4.  
  5. // Llamamos a la funcion setInterval con una referencia
  6. // a la funcion a, previamente definida, notese la AUSENCIA
  7. // de comillas
  8. setInterval(a, 1000);
  9.  
  10. // Llamamos a la funcion setInterval con una funcion anonima
  11. setInterval(function() {
  12.     alert('Hola');
  13. }, 1000);
__________________
blog | @aijoona

Etiquetas: setinterval, settimeout
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:40.