2013-02-23 19 views
9

HTML5 WebWorkers'ı JavaScript'te yok etmenin bir yolu var mı?WebWorkers'ı Yok Etme

İşte durumum: Bazı oluşturma işlemlerini optimize etmek için çok sayıda Web Çalışanı üreten (16 ve 32 arasında) bir web uygulamasına sahibim. Bu işlem ilk birkaç kez çalışır, ancak komutun birkaç kez çalıştırıldığı (sayfa yeniden yüklenmeden) sayfa ölür. Bir kerede çok fazla (100+) WebWorkers ürettiğimde aldığım aynı hatadır, bu yüzden aynı engele girdiğimi varsayıyorum.

Komut dosyası bir defadan fazla çalıştığında, ilk raundda başlatılan WebWorkers'ının artık bulunması gerekmez; WebWorker nesnelerini tekrar kullanmıyorum. İlk defa yaratılan WebWorkers'ı yok etmek istiyorum, böylece yeni WebWorker'ları üretmeye çalışırken betiğin gelecekteki uygulamalarının durmasına izin vermeyin.

Bu sorunu yalnızca Chrome ve Firefox'ta fark ettim; Safari'nin bu sınırlamaları yok gibi görünüyor.

cevap

10

hemen bir işçiyi sonlandırmak için ana pencereden diyoruz mümkün olmalıdır: kendisi görüyorsanız işçiden close() çağırabilir, Alternatif https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers

:

myWorker.terminate(); 

burada tam API bölümüne bakın https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers

+0

Tam olarak aradığım şey. –

+0

ama sadece işçinin görevini bitirmesini engelliyor, işçinin örneği hala bellekte .. – vsync

+1

@vsync Ben de WebWorker örnekleri ile çalışıyorum. Benim durumumda, işlenen ve tarayıcıya geri gönderilen her bir web çalışanına ilettiğim bazı bilgilere dayanarak her saniyede güncellenmesi gereken 4 farklı DOM alanında çalışmak için 4 web çalışanına ihtiyacım var. Bu kullanım durumunda, her bir aramadan sonra her bir WebWorker'ı sonlandırmalıyım()/close() veya performans sorunları, bellek sızıntıları vb. Konusunda endişelenmeden aynı şeyi tekrar kullanabilir miyim? –