tiempo loop interval funcion ejecutar despues javascript delay settimeout timing

loop - sleep javascript



¿SetTimeout sin retardo es lo mismo que ejecutar la función al instante? (3)

Estoy mirando un código existente en una aplicación web. Yo vi esto:

window.setTimeout(function () { ... })

¿Es esto lo mismo que simplemente ejecutar el contenido de la función de inmediato?


Hay un retraso mínimo que usa setTimeout (4 ms según HTML5, Firefox 3.6 usa 10 ms). Hay una discusión al respecto en la página de documentación del Centro de Desarrolladores de Mozilla.


No se ejecutará necesariamente de inmediato, ni establecerá explícitamente el retraso en 0. La razón es que setTimeout elimina la función de la cola de ejecución y solo se invocará después de que JavaScript haya finalizado con la cola de ejecución actual.

console.log(1); setTimeout(function() {console.log(2)}); console.log(3); console.log(4); console.log(5); //console logs 1,3,4,5,2

para más detalles ver http://javascriptweblog.wordpress.com/2010/06/28/understanding-javascript-timers/


Te falta el parámetro de milisegundos ...

setTimeout(function() { /*something*/ }, 0);

El 0 establece el retraso en 0, pero lo que realmente hace es dejar que su función "salte la cola" de la lista de ejecución del navegador. El navegador tiene muchas cosas que hacer, como representar objetos en la página, y al invocar esto, su función se ejecutará tan pronto como el navegador tenga algunos ciclos.