working stop not loop ejemplo cleartimeout javascript clearinterval

javascript - stop - ¿Son clearTimeout y clearInterval lo mismo?



setinterval javascript stop (4)

De hecho, creo que podemos llegar a una conclusión bastante sólida a partir de la especificación W3C ( http://www.w3.org/TR/html5/webappapis.html#timers ). No está explícitamente garantizado pero tenemos mucha evidencia de que casi cualquier implementación razonable tendría este comportamiento:

1) Los tiempos de espera y los intervalos utilizan la misma función subyacente:

El método setTimeout () debe devolver el valor devuelto por los pasos de inicialización del temporizador, pasándoles los argumentos del método ... y el indicador de repetición establecido en falso.

El método setInterval () debe devolver el valor devuelto por los pasos de inicialización del temporizador, pasándoles los argumentos del método ... y el indicador de repetición establecido en verdadero.

2) Esta función única, los "pasos de inicialización del temporizador" mencionados anteriormente, utiliza una única lista de temporizadores:

2, ... sea manejador un entero definido por el agente de usuario que es mayor que cero que identificará el tiempo de espera que se establecerá con esta llamada en la lista de temporizadores activos.

10, asa de retorno ...

3) clearTimeout () y clearInterval () operan en esa lista (y de hecho no están diferenciados por la especificación de ninguna manera)

Los métodos clearTimeout () y clearInterval () deben borrar la entrada identificada como manejador de la lista de temporizadores activos del objeto WindowTimers en el que se invocó el método, donde manejador es el argumento pasado al método, si lo hubiera. (Si el identificador no identifica una entrada en la lista de temporizadores activos del objeto WindowTimers en el que se invocó el método, el método no hace nada).

Creo que esto presenta un caso bastante fuerte que clearTimeout y clearInterval también deben estar de acuerdo con la especificación. Esto está respaldado por el hecho de que funciona en todos los navegadores que probé (Chrome 37, Firefox 33 y Opera 25).

Cuando trabajaba en algún Javascript para una aplicación web, noté que había usado setTimeout , pero había intentado borrarlo con clearInterval y clearInterval que el tiempo de espera se produjera en Google Chrome e Internet Explorer 9.

¿Son clearTimeout y clearInterval intercambiables?

Aquí hay un JSfiddle con un ejemplo de lo que estoy hablando.


De la referencia de Mozilla :

Vale la pena señalar que el conjunto de ID utilizados por setTimeout () y setInterval () están compartidos, lo que significa que técnicamente se pueden usar clearTimeout () y clearInterval () indistintamente. Sin embargo, para mayor claridad, debes evitar hacerlo.


Incluso si se pueden usar como sinónimos ahora, podría cambiar en cualquier momento en el futuro. ¿Por qué no deberías llamar pala a pala? :-)


No, no son intercambiables.

Claro, algunos navegadores pueden muy bien compartir el mismo código para borrar intervalos y tiempos de espera de la misma manera, pero eso no significa que sean intercambiables, y seguramente no está garantizado que funcionen igual en todas las implementaciones de los navegadores. Se trata de que estos dos métodos se definan de manera diferente para diferentes propósitos y, por lo tanto, debe usarlos para sus usos designados. De lo contrario, solo está pidiendo problemas.