Pregunta

Dos preguntas:

  1. ¿Cómo es el valor devuelto por setInterval y setTimeout (los que se usan para limpiar los temporizadores) calcula?

  2. ¿Es posible que tanto las funciones que devuelven el mismo valor durante el tiempo de ejecución? Por ejemplo:

    var a = setInterval(fn1, 1000);
    var b = setTimeout(fn2, 1000);

¿Es posible que a y b que tienen el mismo valor?

La primera de ellas es más de una pregunta para-mi-conocimiento, pero el segundo es más importante.

¿Fue útil?

Solución

devuelve un valor que puede ser utilizado para cancelar el temporizador . Así, parecería poco probable que vuelvan el mismo valor (a menos que sean los valores de reutilización y uno de los temporizadores ya ha sido cancelada)

Mozilla afirma que es DOM nivel 0, pero no forma parte de la especificación. (busque en la parte inferior de la página)

Tengo una mejor referencia:

Nabble dice:

  

SetTimeout y setInterval son de   la especificación original Javascript,   pre-ECMA. Esa no es la especificación   estandarizada oficialmente en cualquier lugar, pero   que es soportado por todos los navegadores web   y la mayoría de las implementaciones de la   Lenguaje javascript. (Incluso   ActionScript.)

     

Las especificaciones pre-ECMA son a menudo conocidos como   las API DOM- "0". Debido a que tienen   Nunca ha sido estandarizada antes,   tiene sentido para HTML5 a SPEC finalmente   las API no en desuso en un intento   para proporcionar un ambiente consistente   en todos los navegadores. Especialmente cuando   los acontecimientos recientes han demostrado que existe   son empresas que les gusta poner en práctica   la letra de la norma, pero no   el espíritu.

aquí , o de Sun (que era un endosante temprana de JavaScript).

Otros consejos

Probado esto bajo Opera 9, Safari 3, Firefox 3 e Internet Explorer 7.

Todos los valores enteros devueltos, a partir de 1 y luego incrementando en 1 por cada llamada a setTimeOut() y setInterval(). Sin embargo, he notado que los navegadores empezaron los contadores y los manejan de forma diferente:

  • IE se inició con un número de 6 dígitos (aparentemente) al azar, pero las posteriores llamadas a cualquiera de las funciones incrementa este número. Después de cerrar y volver a abrir el IE me encontré con que el número de partida parecía ser generada de forma aleatoria, ya que no estaba cerca del recuento de la sesión anterior.
  • Opera mantiene un contador para cada pestaña - cerrar una pestaña y abrir uno nuevo en marcha el contador de 1 en la nueva pestaña
  • .
  • En Safari, el recuento fue global - abrir una nueva pestaña y llamar a las funciones en distintas pestañas parecía incrementar un contador de referencia global
  • .
  • En Firefox, el contador apareció para comenzar a las 2, y se incrementa en cada llamada posterior a cualquiera de las funciones. Al igual que Opera, cada pestaña tiene su propio valor del contador, pero parecía que todo el comienzo a las 2.

Aviso sin embargo, que en todos los escenarios, no hay dos identificadores (al menos en la misma pestaña) son los mismos.

Creo que no es un comportamiento estandarizado. En Firefox, es solo número entero, incrementando en cada llamada de setTimeout o setInterval. Y, no, no pueden tener el mismo valor.

Desde el sitio web de Mozilla:

  

intervalID es un identificador único intervalo se puede pasar a clearInterval ().

Por lo tanto, es único:)

Si pueden tener el mismo valor depende de la implementación de JavaScript. Como se mencionó en Firefox Maciej que no pueden tener el mismo valor que se utiliza el mismo contador. Sin embargo, eso podría ser diferente en otros navegadores, por lo que es quizás mejor no confiar en ellos nunca tienen el mismo valor.

Me suena que el valor devuelto es el valor del índice para cualquier lista de temporizadores / intervalos que se mantienen mantiene internamente.

Como en el punto, que se llama clearInterval (18) en lugar de clearInterval (var_returned_from_set) y se detuvo el temporizador / intervalo deseado. (FF17.0.1 Probado y IE9.0.8)

También en mi propia prueba que parecen ser exclusivas para la vida útil de la página para ambos de estos navegadores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top