Tengo un código JavaScript al que tengo que añadir una función de reposo/espera. El código que estoy ejecutando ya está en una función, por ejemplo:
function myFunction(time)
{
alert('time starts now');
//code to make the program wait before continuing
alert('time is up')
}
He oído que una posible solución podría ser
setTimeout
pero no estoy seguro de cómo utilizarlo en este caso.
No puedo usar PHP, ya que mi servidor no lo soporta, aunque usar jQuery estaría bien.
JS no tiene una función sleep, tiene las funciones setTimeout() o setInterval().
Si puedes mover el código que necesitas ejecutar después de la pausa al callback setTimeout()
, puedes hacer algo como esto:
//code before the pause
setTimeout(function(){
//do what you need here
}, 2000);
ver ejemplo aquí :
Esto no detendrá la ejecución de tu script, pero mientras setTimeout()
sea una función asíncrona, este código
console.log("HELLO");
setTimeout(function(){
console.log("THIS IS");
}, 2000);
console.log("DOG");
imprimirá esto en la consola:
HELLO
DOG
THIS IS
(nótese que DOG se imprime antes de THIS IS)
Puede utilizar el siguiente código para simular un sueño durante períodos cortos de tiempo:
function sleep(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds){
break;
}
}
}
Ahora, si quieres dormir durante 1 segundo, sólo tienes que usar
sleep(1000);
ejemplo: http://jsfiddle.net/HrJku/1/
tenga en cuenta que este código mantendrá su script ocupado durante n milisegundos. Esto no sólo detendrá la ejecución de Javascript en su página, sino que, dependiendo de la implementación del navegador, puede hacer que la página no responda completamente, y posiblemente hacer que todo el navegador no responda. En otras palabras, esto es casi siempre un error.