Sobes.tech
Middle

JavaScript'te Web Worker akışını nasıl oluşturursunuz?

sobes.tech yapay zeka

AI'dan gelen yanıt

JavaScript'te bir Web Worker akışını Worker yapısı kullanılarak oluşturabilirsiniz.

// Yeni bir Web Worker oluşturuyoruz ve JS dosyasının yolunu veriyoruz,
// bu dosya ayrı bir akışta çalışacaktır.
const worker = new Worker('worker.js'); 

worker.js dosyasında (veya worker oluşturulurken belirtilen herhangi bir dosyada) kod ayrı bir akışta çalışacaktır.

// worker.js

// Ana akıştan gönderilen mesajların işlenmesi
self.onmessage = function(event) {
  const receivedData = event.data;
  console.log('Ana akıştan alınan mesaj:', receivedData);

  // Mesajı geri ana akışa gönder
  const responseData = { message: 'Worker’dan Merhaba!', data: receivedData };
  self.postMessage(responseData);
};

// İsteğe bağlı olarak, hata işlemi eklenebilir
self.onerror = function(error) {
  console.error('Worker hatası:', error);
};

Ana akışta (worker oluşturulduğu yerde), worker ile etkileşim kurabilirsiniz:

// main.js

const worker = new Worker('worker.js'); 

// Web Worker’a mesaj gönder
worker.postMessage({ command: 'start', payload: 'some data' });

// Web Worker’dan alınan mesajları işleme
worker.onmessage = function(event) {
  const receivedData = event.data;
  console.log('Worker’dan alınan mesaj:', receivedData);
};

// Web Worker hatalarını yakalama
worker.onerror = function(error) {
  console.error('Ana akışta Worker hatası:', error);
};

// Web Worker’ı sonlandırma (isteğe bağlı)
// worker.terminate(); 

Anahtar noktalar:

  • İletişim: Ana akış ile worker arasındaki veri alışverişi postMessage() ve onmessage metodlarıyla mesajlar aracılığıyla gerçekleşir.
  • Kısıtlamalar: Worker’lar DOM’a, window nesnesine ve tarayıcıdaki diğer küresel nesnelere erişemezler. Sınırlı erişimleri vardır navigator, location, XMLHttpRequest, setTimeout, setInterval, fetch, WebSockets ve diğerlerine.
  • İzolasyon: Worker içindeki kod, ana akışın engellenmesini önler ve performansı artırır, özellikle kaynak yoğun hesaplamalar sırasında, ayrı bir akışta çalışır.