2011-07-21 17 views
5

Me suscribo al evento onProgress al cargar un archivo a través de XHR. Mi barra de progreso está animada (a través de jQuery) para proporcionar una mejor estética visual.¿Con qué frecuencia se lanza xhr.upload.onProgress?

onProgress parece disparar muy rápidamente, por lo que se preguntó la frecuencia con la que en realidad es despedido de manera que de alguna manera me puedo idear un proceso mediante el cual puedo estrangular las respuestas a esta para que pueda tener una animación continua barra de progreso

Respuesta

2

_.throttle(function, wait)

UnderscoreJS tiene utilidades para las funciones de aceleración.

La cantidad real onProgress que se activa es específica del navegador, por lo que es mejor acelerar la devolución de llamada real en una solución basada en el tiempo.

7

mientras se extiende jQuery puede ser beneficioso; para algo tan simple, extender jQuery no vale la pena. Una solución efectiva para limitar las llamadas a funciones podría escribirse como:

xhr.upload.onprogress = function(event) { 
    // limit calls to this function 
    if (!this.NextSecond) this.NextSecond = 0; 
    if (Date.getTime() < this.NextSecond) return; 
    this.NextSecond = Date.getTime() + 1000; 

    // this code gets executed at least one second apart from the last time 
} 
Cuestiones relacionadas