2010-04-27 4 views
5

El HTML5specifications indica que setTimeout se puede ejecutar sin el argumento adicional de "tiempo de espera" que se supone que indica después de cuántos milisegundos se programará la función "controlador".setTimeout (diversión) con un solo argumento? (Tiempo de espera no especificado)

handle = window . setTimeout(handler [, timeout [, arguments ] ]) 
    Schedules a timeout to run handler after timeout milliseconds. Any arguments are passed straight through to the handler. 

Sin embargo, no pude encontrar en cualquier lugar que explica lo que ocurre cuando no se establece un período de tiempo "tiempo de espera".

Un uso de ejemplo es, el animation implementation en la biblioteca de Raphael.

animationElements[length] && win.setTimeout(animation); 
+0

Todos los principales navegadores actuales son capaces de aceptar un solo argumento, por lo que para evitar cualquier confusión, vale la pena señalar que un navegador no tiene que ser compatible con HTML5 para admitir esto. –

+2

Esta es una manera espléndida de realizar llamadas a procedimientos diferidos en JS: "hacer X más tarde/no está bien ahora". Si está dentro de un controlador de eventos, puede ser un mal momento para llamar a alguna función debido a problemas de estado/reincorporación. Tenga en cuenta que no puede garantizar el tiempo de ejecución real, pero es "pronto". – JBRWilkinson

+0

@Andy Mozilla MDC indica el milisegundo como parámetro obligatorio. –

Respuesta

13

Ver http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#get-the-timeout

  1. Let tiempo de espera sea el segundo argumento de el método, o cero si se omite el argumento .
+5

Pásame :-) +1. Iba a agregar a mi propia respuesta (pero también puedo agregarla aquí) que el hecho de que el argumento de tiempo de espera sea 0 no significa necesariamente que se ejecutará instantáneamente, sino que se pondrá en cola para que se ejecute cuando el hilo esté inactivo, p. después de que se haya terminado toda la ejecución del código actual. –

+0

Grr ... no sé cómo me lo perdí. Lo siento y gracias. –

+1

Para su información, el documento al que se hace referencia anteriormente se ha modificado, de modo que ahora solo se lee: "Dejar que el tiempo fuera el segundo argumento para el método". Sin embargo, la documentación de Mozilla documenta este comportamiento aquí: https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout – minorgod

1

que he probado en todos los navegadores incluyendo IE6, todo funciona bien. Así que siéntanse libres de usarlo ~~

Cuestiones relacionadas