2011-07-21 3 views
5

Je souscris à l'événement onProgress lorsque je télécharge un fichier via XHR. Ma barre de progression est animée (via jQuery) pour offrir une meilleure esthétique visuelle.À quelle fréquence xhr.upload.onProgress démarre-t-il?

onProgress semble tirer très rapidement, donc je me demandais combien de fois il se fait tiré pour que je puisse en quelque sorte concevoir un processus par lequel je peux accélérer les réponses à ce que je puisse avoir une barre de progression animée en permanence

Répondre

2

_.throttle(function, wait)

UnderscoreJS possède des utilitaires pour les fonctions de régulation. Le montant réel onProgress get est spécifique au navigateur, il est donc préférable de limiter le rappel sur une solution basée sur le temps.

7

tout en allongeant jQuery peut être bénéfique; Pour quelque chose, cette simple extension de jQuery ne vaut pas les frais généraux. Une solution efficace pour limiter les appels de fonction peut être écrite comme suit:

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 
} 
Questions connexes