Sobes.tech
Middle

Web işçileri nedir ve ne işe yararlar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Web işçileri, tarayıcının ana kullanıcı arayüzü akışından ayrı, arka planda JavaScript kodu çalıştırmanın bir yoludur.

Amacı:

  • Kaynak yoğun hesaplamaları, ana akışı engellemeden gerçekleştirmek, böylece arayüzün donmasını önlemek.
  • Büyük veri işlemleri veya uzun süren işlemleri (örneğin, ayrıştırma, sıkıştırma, bazı durumlarda ağ istekleri) arka planda yapmak.
  • Web uygulamalarının performansını ve yanıt verme kabiliyetini artırmak.

Web işçilerinin türleri:

  1. Dedicated Worker: Oluşturan betiğe bağlıdır.
  2. Shared Worker: Aynı alan adındaki farklı pencerelerde veya sekmelerde çalışan birkaç betik arasında paylaşılabilir.
  3. Service Worker: Ağ isteklerini yakalar, önbelleği yönetir, çevrimdışı erişim sağlar, push bildirimlerini destekler.

Dedicated Worker oluşturma ve kullanma örneği:

// main.js (ana akış)
const worker = new Worker('worker.js');

// İşçiye mesaj gönder
worker.postMessage('Ağır hesaplamalara başla');

// İşçiden mesaj al
worker.onmessage = function(event) {
  console.log('İşçiden alınan:', event.data);
};

// worker.js (işçi kodu)
self.onmessage = function(event) {
  console.log('İşçide alınan:', event.data);

  // Ağır hesaplamaların simülasyonu
  let result = 0;
  for (let i = 0; i < 1000000000; i++) {
    result += i;
  }

  // Ana akışa geri mesaj gönder
  self.postMessage('Hesaplamalar tamamlandı, sonuç: ' + result);
};

Kısıtlamalar:

  • DOM'ye doğrudan erişim yok.
  • Ana akışın bazı küresel değişkenleri (örneğin, window, document) kullanılamaz.
  • İletişim, asenkron mesaj alışverişi yoluyla gerçekleşir (postMessage ve onmessage/addEventListener('message')).
  • Veriler, kopyalama (structured clone algoritması) yoluyla iletilir, ancak büyük veriler için Transferable Objects kullanılarak referansla iletim yapılabilir (kayba yol açar).