working stop remove not español ejemplo javascript setinterval

stop - Comportamiento de setInterval() con 0 milisegundos en JavaScript



setinterval javascript español (4)

El navegador establece un valor mínimo para el intervalo. Usualmente 10ms, pero puede depender del navegador. Esto significa repetir esto tan rápido como sea posible. La especificación del W3C dice 4ms: http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#timers

Esto es correcto pero probablemente revele un error de diseño.

EDITAR: por cierto, es una mala práctica pasar una cadena a setTimeout / setInterval, pasar una función en lugar de que javascript tiene funciones de primera clase.

En mi aplicación, encontré un código JavaScript que usa setInterval con 0 milisegundos, así:

self.setInterval("myFunction()",0);

Obviamente, esto no me parece una buena idea. ¿Alguien puede decirme cuál será el comportamiento de setInterval aquí? ("myFunction" realiza una llamada AJAX al servidor)

Estoy preguntando esto porque tengo un comportamiento irregular en mi aplicación. El 90% de las veces, la aplicación se comporta correctamente y se realiza exactamente una llamada al servidor. Sin embargo, a veces, se realizan varias llamadas al servidor (hasta ahora, el máximo es de 48 llamadas) y estoy casi seguro de que es culpa de esta línea de código.


Para que se ejecute solo una vez con un retraso menor, use setTimeOut en setTimeOut lugar:

window.setTimeout(myFunction, 10);

Como está utilizando AJAX, no tiene que usar ningún temporizador, solo llame a la próxima solicitud de AJAX en el Callback (evento completo / exitoso) de la solicitud de AJAX actual.

Publique su código actual y podremos guiarle más.


Supongo que en myFunction() hay un clearInterval .

Básicamente, has establecido un intervalo que puede suceder con la mayor frecuencia posible. Si el navegador que ejecuta JavaScript llega a la parte de clearInterval antes de la siguiente iteración del intervalo, entonces estará bien. De lo contrario, sucederá una y otra vez.

Utilice setTimeout en setTimeout lugar.


setInterval(myFunction, 0) llama a myFunction continuamente con un retraso mínimo. Es casi como llamar a myFunction en un bucle infinito. Excepto que aquí puede detener el bucle utilizando el método clearInterval .