Retardo en Javascript

¿Cómo se puede hacer un Delay dentro de una funcion JavaScript? Para ejecutar una sentencia o sentencias cuando pase un tiempo determinado.

La FAQ Retardo en Javascript tiene

Pertenece a la categoría:

Pregunta
¿Cómo se puede hacer un Delay dentro de una funcion JavaScript? Para ejecutar una sentencia o sentencias cuando pase un tiempo determinado.


Respuesta de Miguel Angel Alvarez
La función que debes utilizar es
window.setTimeout(expression/function, milliseconds)


En el primer parámetro tienes que indicar entre comillas la sentencia o sentencias a ejecutar. En el segundo debes indicar el tiempo a pasar en milisegundos antes de que se ejecuten.


Te paso un enlace de un taller que utiliza esta función para que te sirva como ejemplo:


http://www.desarrolloweb.com/articulos/358.php

Complementar la respuestaComplementar la respuesta
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios
Fueron enviados 6 comentarios a la faq
3 comentarios no revisados
3 comentarios revisados:
Por: Germán
28/1/04
La solución propuesta con setTimeout es sólo cierta a medias... El problema es que el retraso no afecta al hilo de ejecución de nuestro código porque el código incluido en el setTimeout se ejecuta en segundo plano. O sea, algo como

alert ('Antes');
setTimeout ('nada ()', 5000);
alert ('Después');

producirá dos alerts seguidos, sin esperar 5 segundos entre uno y otro.

Sin embargo,

alert ('Antes');
setTimeout ("alert ('Después');", 5000);

sí producirá la salida esperada.

Y ya, rizando el rizo, este código:

1 alert ('Antes');
2 setTimeout ("alert ('Después');", 5000);
3 alert ('Después');

dará dos alerts seguidos (la línea 1 y la 3) y, a los cinco segundos, otro (línea 2).

Espero que este comentario os sea útil.
Por: DeYoN
10/3/04
El problema que comenta German es cierto, no detiene la ejecución de todo el programa.

Para solucionar este problema se puede hacer una función que contenga todo el programa y usar setTimeout para llamar a la función.

function miFuncion()
{
sent1;
sent2;
sent3;
sent4;
...
}
...
setTimeout("miFuncion",3000);

Saludos
Por: Ricardo
17/8/04
con una funcion como esta puedes hacer un perfecto retardo estilo C++, peroo, no vas a poder ejecutar ningun evento mientras se ejecute esta funcion.

function delay(milisegundos)
{
for(i=0;i<=milisegundos;i++)
{
setTimeout('return 0',1);

}
}

Volver al árbol de categoríasVolver al árbol de categorías
Alojados en el grupo