2010-06-02 56 views
0

只是在我的本地機器上,嘗試運行以下腳本會導致我的電腦崩潰......我在做什麼錯了?每秒更新一次導致大量內存問題

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

我只需要從var「count」中減去一個值,並每秒更新/顯示它的值。

回答

4

你正在做的是建立6824756980個定時器 - > BAD

只是做

$(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

啊,那是...謝謝。 那麼,爲什麼這樣做更有效? – Josh 2010-06-02 12:04:09

+3

或者你可以使用setTimeout。 Math.floor不是必需的。 – 2010-06-02 12:05:12

+0

@Josh,setInterval告訴JavaScript以間隔(在你的情況下爲1秒)重複調用該函數。所以如果你的代碼沒有崩潰,它最終會每秒鐘運行6824756980次! – 2010-06-02 12:07:22

0

除了數是一個字符串,而不是一個數字,你產卵一個非常大的數量的while(count> 0){setInterval ...}的區間函數

如果我明白了,您應該檢查Interval函數中的count> 0,因爲它每秒運行一次。

0

您的setInterval是錯誤的地方。

它目前在while循環的主體中,循環速度可以像計算機一樣快,每次觸發函數來遞增計數器。難怪它是吃資源。

你只需要調用setInterval一次。