2010-11-22 24 views

回答

12

如果您想停止發生未決的setTimeout,則只需要調用clearTimeout。 setTimeout發生後,定時器ID不再有效,但幸運的是,使用無效的定時器ID調用clearTimeout是無害的。

如果發現內存泄漏,則問題出現在其他位置。

6

有些時候setTimeout的會導致內存泄露......看到下面的文章:setTimeout memory leaks

被警告,IEx標誌有一個垃圾收集微妙,雖然;我認爲,如果你在一個Javascript閉包中引用了一個DOM變量,那麼這個收集機制會變得困惑,並且在請求結束時它不會被拋棄:最終這會變成內存泄漏。我認爲這是因爲DOM變量和內部JS變量被兩個不同的收集器收集,並且他們不能正確地交流不再使用的內容。

我想你可以通過變量設置爲null解決這個問題:

setTimeout(function(){ 
    myFunction(parameter); 
    parameter = null 
}, myTimeout); 

這明確地設置了垃圾收集運動。

相關問題