2010-06-02 5 views
0

Sur mon ordinateur local, l'exécution du script suivant provoque le crash de mon ordinateur ... Que fais-je de mal?Mise à jour compte chaque seconde provoquant des problèmes de mémoire massives

  (function($) { 
      var count = '6824756980'; 
      while (count > 0) { 
       setInterval(function() { 
        $('#showcount').html(Math.floor(count-1)); 
        count--; 
       }, 1000); 
      } 
     })(jQuery); 

Tout ce que je dois faire est de soustraire un du var « count » et mise à jour/afficher sa valeur chaque seconde.

Répondre

4

ce que vous faites est la mise en place 6824756980 -> minuteries BAD

faire juste

$(document).ready(function(){ 
    var count = 6824756980; 
    var timerID = setInterval(function() { 
      if(count > 0){ 
       $('#showcount').html(Math.floor(count-=1)); 
       count--; 
      } 
      else clearInterval(timerID); 
    }, 1000); 
}); 
+0

Ah, ça l'a fait ... Merci. Alors, pourquoi cela fonctionne-t-il plus efficacement? – Josh

+3

Ou vous pouvez utiliser setTimeout. Et le Math.floor n'est pas nécessaire. –

+0

@Josh, setInterval dit à JavaScript d'appeler la fonction plusieurs fois à intervalle (une seconde dans votre cas). Donc, si votre code ne plante pas, il finira par fonctionner 6824756980 fois par seconde! –

0

En plus de compter étant une chaîne au lieu d'un numéro, vous êtes fraie un très grand nombre de Intervalle fonctions avec while (count> 0) {setInterval ...}

Si je comprends bien, vous devriez vérifier count> 0 dans la fonction Interval, car il s'exécute toutes les secondes.

0

Votre setInterval se trouve au mauvais endroit.

Il est actuellement dans le corps d'une boucle while qui sera en boucle aussi vite que votre ordinateur peut aller et chaque fois que le feu de la fonction pour incrémenter le compteur. Pas étonnant que ça mange des ressources.

Vous n'avez besoin d'appeler qu'une seule fois setInterval.

Questions connexes