Bir kullanıcı web siteme göz atarken bazı arka plan işlevleri sağlamak için Web Çalışanlar'ı kullanmayı düşünüyorum (Web Çalışanlar bunun için uygun, değil mi?). Bununla birlikte, kullanıcı deneyiminden taviz vermek, laggy kaydırma, tepkisiz kontroller vb. Nedenlerle riske girmek istemiyorum. Web İşçileri, OS iş parçacıkları üzerinde eşleştiriliyor, dolayısıyla, bu iş parçacıklarının önceliği üzerinde bazı kontroller beklemekteyim. Bildiğim kadarıyla mevcut API'da böyle bir şey yok. Bunu nasıl başaracağınızı biliyor musunuz? Bir hack ile bile mi?Bir Web Çalışanı'nı düşük öncelikli olarak ayarlamanın bir yolu var mı?
cevap
Böyle düşük düzeydeki ayrıntıları denetlemek için API çağrısı yok. Bununla birlikte, ilk önce yapmak istediğinizi uygulamanız gerektiğini ve performans isabetinin kullanıcı deneyiminde çok büyük olup olmadığını test etmeniz gerektiğini düşünüyorum. Konuların nasıl işlediğine dair ince kontrol eklemedikleri için, muhtemelen temel uygulama tarafından iyi yönetiliyorlar.
Bir kesmekle bile mi? [...] kullanıcı bir fotoğraf yükler ve işçi oldukça yoğun işlemci buna bir Photoshop benzeri filtresi, uygular, daha sonra işçi İşte kesmek ana iş parçacığı
uyarır.
Kodunuzu yavaşlayın.
var TIME_STEP = 10,
paused = false,
state; // set by commands.start()
function main_loop() {
if (paused) {
return;
}
// update state incrementally. Break your process into chunks
// for example pixels or rows of pixels
state = ____________;
// send state or progress to main thread
if (finished) {
self.postMessage(state);
} else {
self.postMessage(progress);
}
setTimeout(main_loop, TIME_STEP);
}
var commands = {
//...functions that can be called from main thread (pause/start/cancel/etc)...
};
function message_handler (event) {
var data = event.data;
var command = commands[data.command];
command.apply(this, data.args);
}
self.addEventListener('message', message_handler, false);
TIME_STEP
hesaplamalar arasındaki zaman ve ne yaptığınızı bağlı ve ne kadar zamanı geldi artırmak için göze farklı olması gerekir: Böyle bir şey Şu anda bir parçacık simülasyonu için kullanıyorum budur. Bu şekilde yapmanın iyi bir yanı, yinelemeleri arasındaki istekleri duraklatabilir ve iptal edebilirsiniz.
- 1. Mysql'de düşük öncelikli sorgu
- 2. Düşük Öncelikli Express.js uygulaması ('/ rota');
- 3. text_field_tag üzerinde gerekli özellik ayarlamanın bir yolu var mı?
- 4. EventLog havuzuna (Serilog'da) Olay Kimliği ayarlamanın bir yolu var mı?
- 5. Oturumlarınızı php olarak ayarlamanın doğru yolu nedir?
- 6. Bir tablonun tüm sütununun metin hizalamasını ayarlamanın bir yolu var mı?
- 7. Sorgu sonuçlarını psql'de görüntülerken bir sütunun maksimum genişliğini ayarlamanın bir yolu var mı?
- 8. StringGrid'de bir değer girerken Klavye Türünü ayarlamanın bir yolu var mı?
- 9. Inno Kurulumu: Kaldırma sırasında bir kayıt defteri anahtarı değeri ayarlamanın herhangi bir yolu var mı?
- 10. Heroku Toolbet için varsayılan bir uygulama ayarlamanın bir yolu var mı?
- 11. Google Chrome'un geliştirici araçları penceresini her zaman en üstte olacak şekilde ayarlamanın bir yolu var mı?
- 12. Git'te, bir dosyayı "saf" olarak işaretlemenin bir yolu var mı?
- 13. Tablo adını bir dize olarak belirtmenin bir yolu var mı?
- 14. Düşük öncelikli OpenCL programını çalıştırabilmek için ("hoş" olun)?
- 15. s3 uri aws web konsolundan almanın bir yolu var mı?
- 16. Özellikle, yığınlanmış eylem çubuğu için actionBarTabTextStyle ayarlamanın bir yolu var mı?
- 17. Web uygulamalarım tomcat günlüklerini bir tarayıcıda gerçek zamanlı olarak görmenin bir yolu var mı?
- 18. Silverlight UI Element'i görüntü olarak almanın bir yolu var mı?
- 19. Bir Android Web Görünümü ile görüntülemek için bir web sayfasını önbelleğe almanın bir yolu var mı?
- 20. Öncelikli değerler
- 21. IFrame'i "about: blank" olarak ayarlamanın çapraz tarayıcı yolu?
- 22. Git, varsayılan olarak öntanımlı olarak var mı?
- 23. YQL'i HTML'ye döndürmenin bir yolu var mı?
- 24. Jasmine'e kaynak olarak harici Javascript eklemenin bir yolu var mı?
- 25. Clojure özel formlarını programlı olarak toplamanın bir yolu var mı?
- 26. Oynatmayı otomatik olarak yeniden yüklemeyi engellemenin bir yolu var mı?
- 27. If ifadesinin durumunu, değeri olarak kullanmanın bir yolu var mı?
- 28. Ko.observableArray öğesini harita olarak kullanmanın bir yolu var mı?
- 29. Paketli Eklentiler listesini otomatik olarak oluşturmanın bir yolu var mı?
- 30. Haddock'da ilk olarak işlev parametrelerini tanımlamanın bir yolu var mı?
Hangi platformda ve hangi dilde? – rene
Web çalışanlarını ne amaçla kullanıyorsunuz? Periyodik aktivite? Bir kez bir görev yürütme? – Tudor
@Tudor Tek seferlik bir yürütme (örneğin, kullanıcı bir fotoğraf yükler ve işçiye Photoshop benzeri bir filtre uygular, bu da oldukça yoğun CPU yoğun, daha sonra çalışan ana iş parçacığı uyarır) derdim. JS'de – tunnuz