ajax ve asp.net kullanıyorum. Ben setTimeout ile diğer birçok javascript fonksiyonları yaratan bir javascript işlevi var. Eşzamansız geri gönderme gerçekleştikten sonra, bu setTimeouted olaylarının tümünü devre dışı bırakmak istiyorum. Bunu nasıl yapabilirim?Tüm setTimeout olaylarını nasıl devre dışı bırakabilirim?
cevap
setTimeout()
numaralı telefonu aradığınızda, temizleyebilmeniz için zamanlayıcı kimliğini saklayın. Çok sayıda zaman aşımı oluşturuyorsanız, bir dizi, kimlikleri saklamak için iyi bir seçenektir. Sonra
var timeouts = [];
//then, store when you create them
timeouts.push(setTimeout({ ... }, 1000));
bunları temizlemek istediğiniz: aşağıda belirtildiği
for (var i = 0; i < timeouts.length; i++) {
clearTimeout(timeouts[i]);
}
//quick reset of the timer array you just cleared
timeouts = [];
@Robert olarak zaman aşımı oluştu zaten eğer, clearTimeout()
, hiçbir ırk vardır, böylece/bir hata atmaz Örneğin zamanlama sorunları burada.
Global olarak bunu yapabileceğinizden emin değil, ancak en yaygın yöntem clearTimeout kullanmaktır. SetTimeout() öğesinin dönüş değerini clearTimeout() öğesine iletirseniz, tüm zaman aşımı değişkenlerini saklamak için genel bir var kullanabilirsiniz.
Zamanlayıcının ayarlandığı koda erişim sağlayamıyorsanız, Nick'in cevabı işe yaramayabilir, bu yüzden düşünebildiğim tek şey bu bilgisayar korsanlığıdır.
Bu bir hacktir, dikkatli kullanın!
// Set a fake timeout to get the highest timeout id
var highestTimeoutId = setTimeout(";");
for (var i = 0 ; i < highestTimeoutId ; i++) {
clearTimeout(i);
}
Temel olarak en yüksek zamanlayıcı id kapar ve daha az şeyi temizler. Ancak, temizlemek istemediğiniz diğer zamanlayıcıları temizlemek de mümkündür!
Vaidotas sayesinde, set zaman aşımı işlevimi daha tarayıcı dostu olacak şekilde güncelledim – SeanDowney
+1 bu, tüm zaman aşımlarını kapatmak için Javascript konsoluna yapıştırmak için kullanabileceğiniz çok kullanışlı bir pasaj! –
Bu hack, yakalanması zor hatalara neden oluyor, çünkü bir 3. parti kitaplığı setTimout ve başlatma için setInterval kullanıyorsa, bu libary, yeni öğrendiğim gibi bir neden olmadan çalışmayı durduracaktır. – user2191332
Öncelikle, bu kodu kullanıyordu:
var x = setTimeout('');
for (var i = 0; i < x; i++)
clearTimeout(x);
Ancak bu kod barış Google Chrome'da çalışmadı. Yani bunun için iyileştirme yaptık: Yukarıdaki açıklamada belirtildiği, bu nedenle dikkatli kullanın gibi
var x = setTimeout('alert("x");',100000); //It is very low probability that after 100 seconds x timeout will not be cleared
for (var i = 0; i <= x; i++)
clearTimeout(i);
Son olarak, bir hack vardır.
Düzenleme: (kullanım i yerine x'in) Ayrıca
- 1. Tüm grup/dosya klasörü için ARC'yi nasıl devre dışı bırakabilirim?
- 2. Windows anahtarı C# nasıl devre dışı bırakabilirim?
- 3. Tomcat önbelleğe almayı nasıl devre dışı bırakabilirim?
- 4. GCC'yi kullanırken vektörleştirmeyi nasıl devre dışı bırakabilirim?
- 5. Çizik önizleme penceresini nasıl devre dışı bırakabilirim?
- 6. Linux'ta Nagle'in algoritmasını nasıl devre dışı bırakabilirim?
- 7. _moz_resizing özelliğini nasıl devre dışı bırakabilirim?
- 8. Ckeditor'daki kayıt düğmesini nasıl devre dışı bırakabilirim?
- 9. UITextField macunu nasıl devre dışı bırakabilirim?
- 10. XIA8'de Castalia'yı nasıl devre dışı bırakabilirim?
- 11. Android'de WebView dokunma olaylarını devre dışı bırakma
- 12. jQuery-UI kaydırıcısı - klavye girişini nasıl devre dışı bırakabilirim?
- 13. , tüm object.onwheel olaylarını Firefox'ta da devre dışı bırakıyor
- 14. OS X El Capitan'daki Bash oturumlarını nasıl devre dışı bırakabilirim?
- 15. Knockout kullanarak tıklama olayını nasıl devre dışı bırakabilirim?
- 16. Wicket 1.5'de serileşmeyi nasıl devre dışı bırakabilirim?
- 17. Belirli klasörlerde htaccess kullanarak auto_prepend'i nasıl devre dışı bırakabilirim?
- 18. sbtassembly kullanarak sbt'de jar sıkıştırmasını nasıl devre dışı bırakabilirim?
- 19. Pandalar verilerini çizerken etiketi nasıl devre dışı bırakabilirim?
- 20. Emacs'im beyaz boşluk bırakıyor. Bu davranışı nasıl devre dışı bırakabilirim?
- 21. SQL Server 2000'deki girişleri nasıl devre dışı bırakabilirim?
- 22. "TWebbrowser" ile ilgili javascript hatalarını nasıl devre dışı bırakabilirim?
- 23. eonasdan-datetimepicker'daki "ücretsiz" kullanıcı girişini nasıl devre dışı bırakabilirim?
- 24. Drupal modülünü programlı olarak nasıl devre dışı bırakabilirim?
- 25. Ekranda aşağı çekilirken Bildirim Merkezi'nin görüntüsünü nasıl devre dışı bırakabilirim?
- 26. Meteorda canlı yeniden yüklemeyi nasıl devre dışı bırakabilirim?
- 27. Tepki yerel gezgini geri döndürmeyi nasıl devre dışı bırakabilirim
- 28. EdmMetadata tablosuna karşı sorgular yayınlamayı nasıl devre dışı bırakabilirim?
- 29. Android 2.2'deki ListView aşırı hızını nasıl devre dışı bırakabilirim?
- 30. Visual Studio'nun başlık çubuğunu nasıl devre dışı bırakabilirim/kullanabilirsiniz
kayda değer döngüde kullanılan yanlış değişken, sabit, 'clearTimeout()' (zaman aşımı zaten oluştu varsa) bir istisna yoluyla geçersiz kimlik geçirilir etmezse . – Robert
@Robert - İyi bir nokta, bunu kabul ettim ama bunu ekleyeceğim, herhangi bir endişe varsa :) –
Ben javascript tek iş parçacığı modeli ile şunu düşünmek istiyorum: Her durumda clearTimeout tamamlandığında, zaman aşımı olayının tekrar olmayacağının bir garantisi vardır. Dokümanlar içinde değil, bu söylemeye gerek yok mu? – jcalfee314