Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2012, 13:57
IXtremeLT
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 10 meses
Puntos: 32
setInterval() no respeta los milisegundos

Hola que tal!,

Entiendo que si pones mucho que hacer dentro de un intervalo de 1ms, tarda más de lo normal, pues los recursos de la PC no logran procesarlo tan rápido ya que Javascript solo trabaja sobre un hilo de procesamiento.

Pero no entiendo por qué si no estoy poniendo prácticamente nada, se demora bastante. En el siguiente ejemplo defino un intervalo de 1ms que al llegar a 1000ms, se detenga mostrando un mensaje. Pero no tarda 1 segundo ni 2, tarda más de 4 segundos! incluso en la otra PC que tengo más lenta, tarda 10 segundos!.

Pruebenlo y me comentan, gracias!

Código Javascript:
Ver original
  1. // Intervalo de 1ms, que al llegar a los 1000ms se detiene,
  2. // pero el tiempo real pasa de los 4000ms y no hay nada pesado que procesar, ¿Qué sucéde?
  3.         var elapsedTime = 0;
  4.         var startedTime = new Date;
  5.         var timeout     = 1000;
  6.  
  7.         var t = setInterval(function(){
  8.             if ( ++elapsedTime == timeout ) {
  9.                 var finishedTime    = new Date;
  10.                 var realElapsedTime = finishedTime-startedTime;
  11.                 alert('Tiempo esperado = '+elapsedTime+'ms, Tiempo real transcurrido = '+realElapsedTime+'ms');
  12.                 clearInterval(t);
  13.             }
  14.         }, 1);

Saludos!