2011-06-20 30 views
5

Basit bir soru, gerçekten bir sürü zaman aşımı çalıştırıyorum, ancak sayfayı yavaşlatmamalarını ve herhangi bir nedenden dolayı, idam ettikten sonra bellekte tutulmadıklarından emin olmak istiyorum.Çalıştırdıktan sonra setTimeouts'u temizlemek zorunda mıyım?

$projects.each(function(index) { 
    var $this = $(this); 
    window.setTimeout(function() { 
     // animate 
    }, 300 * index); 
}); 
// Clear timeouts? 

Tahminimce, koştuktan sonra yok olduklarını ancak yalnızca en iyi uygulamaları takip etmek istediklerini.

+0

Zaman aşımını silmek için önce zaman aşımı kimliğine bir referans tutmak zorundasınız. ;-) – RobG

+0

@RobG Evet, bunun farkındayım. Hepsini bir dizide saklayacağım ama gereksiz görünüyor. – Marko

cevap

4

Hayır, yapmazsınız. Aralıklı zamanlayıcılar ("setInterval()" aracılığıyla), evet, onları durdurmak isterseniz.

Temizlenmesi gerekmeyen bir zaman aşımını temizlemek zararsızdır. Yani, 'u çalıştırdıktan sonra temizlerseniz, tarayıcılar şikayet etmeyecektir.

+0

Teşekkürler @Point çok beğeni topluyor. Zaman aşımlarını kullanarak bir kerede bir proje listesi gösteriyorum, bu yüzden sadece 20 zaman aşımının ardışık olarak çalıştırılmasının sayfanın yavaşlatılmayacağından emin olmak istedim. Fakat her bir zamanlayıcının sesiyle çalışır ve daha sonra yok edilir. Tekrar teşekkürler. – Marko

İlgili konular