DIV
ürününü dinamik olarak değiştirmek için innerHTML
özelliğini kullanarak, işlemin tamamlanması birkaç saniye sürecek bir işlemle ilgili rapor verin. Sorun, Firefox'ta, sayfanın, betik bittikten sonraya kadar bu değişikliği yansıtacak şekilde yeniden oluşturulmamasıdır. Bu uygulama halsiz hissettiriyor. Daha fazla komut dosyası çalışıyor olsa bile, HTML'deki değişikliklerin hemen gösterilmesini sağlamanın bir yolu var mı?Scriptim biraz yoğun işlem yaparken tarayıcının yeniden çizilmesini nasıl zorlayabilirim?
8
A
cevap
14
Tarayıcı tek parçalıdır. Komut dosyası çalışırken, tarayıcı başka bir şey yapamaz. Bir ilerleme ölçer gibi bir şey yapmak isterseniz, setTimeout()
veya setInterval()
'u kullanmanız ve görevinizi bir aralıkta çalışacak daha küçük parçalara ayırmanız gerekir. Bu, komut dosyası çalıştırmaları arasında, tarayıcıyı yeniden tarayabilen tarayıcıya geri kontrol sağlayarak boşluk bırakır.
6
Komut dosyanızı düzenli aralıklarla kesmeyi deneyin. Sen nextFunction sizin uzun işleme devam fonksiyonudur uzun gecikme olmadan gerekli kesinti sağlamak için
setTimeout(nextFunction, 0);
kullanmak gerekir.
İlgili konular
- 1. Bir sunucuda yoğun bir işlem nasıl yönetilir
- 2. Tablolarda arama yaparken, biraz sıkışmış durumdayım
- 3. Liquibase'i, deyimleri yeniden çalıştırmadan sağlama toplamlarını yeniden hesaplamaya nasıl zorlayabilirim?
- 4. Görünümün yeniden çizilmesini istemek için neden "geçersiz" kelimesini kullanıyorsunuz?
- 5. NSView'ın yeniden çizilmesini mümkün kılmak için bir etiketi nasıl yeniden boyutlandırabilir veya silebilirim?
- 6. Yüksek bellek kullanımı yalnızca çok işlem yaparken
- 7. MSBuild'i temizlemek veya yeniden oluşturmak için nasıl zorlayabilirim?
- 8. Alt sınıfları Java'daki bir sabiti yeniden tanımlamak için nasıl zorlayabilirim?
- 9. Yeniden kimlik doğrulamayı Windows Live OAuth API'sı ile nasıl zorlayabilirim?
- 10. Dikey kaydırma çubuğunun görünmesini nasıl zorlayabilirim?
- 11. Odoo koduma dönüştürülecek bir alanı nasıl zorlayabilirim?
- 12. Scriptim neden FreeBSD'de çalışmıyor? (awk: sözdizimi hatası)
- 13. Plot Yoğun Veri Kümesi
- 14. Windows'da ekran algılamayı nasıl zorlayabilirim?
- 15. Pandalarla yeniden örnekleme yaparken dize değişkeni modu nasıl elde edilir
- 16. Öğenin konumu mutlak ise tarayıcının yeniden akması sağlanıyor mu?
- 17. Yeniden boyutlandırma ajax.org ACE düzenleyicisi, tarayıcının boyutuna göre
- 18. NSOperation operationDidDaha sonra hatalarla işlem yapın, sıraya yeniden işlem ekleyin
- 19. Hız vektörleri yoğun optik akıştan nasıl çıkarılır?
- 20. doğru işlem yaparken dosya varlığını doğru şekilde kontrol ediliyor
- 21. Yoğun bir Tensorflow'dan Seyrek Matrix
- 22. Dağınık tarayıcının ölümünü önleme
- 23. hhvm-fastcgi + nginx tarayıcının
- 24. PCL - Yoğun alanlarda bulunmayan filtreleme noktaları
- 25. Tarayıcının saat dilimini değiştirme
- 26. HtmlUnit'te tarayıcının geri düğmesini nasıl taklit edersiniz?
- 27. Bir tarayıcının MJPEG'i destekleyip desteklemediğini nasıl anlayabilirim?
- 28. urllib2'yi zaman aşımına nasıl zorlayabilirim?
- 29. Gitmeyi, kayan nokta olarak gitmeye nasıl zorlayabilirim?
- 30. JavaScript'te bulanıklık olayının oluşmasını nasıl zorlayabilirim?
Tarayıcının tek iş parçacığı olduğu durum böyle görünmüyor. Bir javascript iş parçacığı vardır, ancak sayfayı işleyen ve DOM –
'u yönlendiren paralel bir iş parçacığı vardır. Bu gerçekten hangi * tarayıcıdan bahsettiğinize bağlıdır. Bazıları şimdi, her tarayıcının içeriği ayrı bir süreç olan, çok işlemcili modeliyle krom gibi yapabilir ve krom da kendi işlemidir. ancak (1) ile herhangi bir tarayıcıyı kolayca asabilirsiniz. Ne tür tarayıcı kullandığınız, tarayıcının nasıl oluşturulduğuna bağlıdır. – Breton
js dizisini while (1) {} ile çağırabilir, ancak bu, dom manipülasyonu veya içerik oluşturma için kullanılan başka bir iş parçacığı olmadığı anlamına gelmez. Bu, JS iş parçacığının muhtemelen diğer iş parçacıklarının çalışmasını engelleyebileceği anlamına gelir. Ve iş parçacıklarının tarayıcı proccess modeliyle herhangi bir ilişkisi olmayabilir (sayfa başına bir işlem veya tüm tarayıcı penceresi için bir işlem) –