Özet - Web Workers
Worker kullanarak büyük bir diziyi arka planda sıralayan bir uygulama yazarsın.
Özet - Web Workers
Bu grupta worker oluşturmayı, mesajlaşmayı, yanıt almayı ve büyük veriyi transfer etmeyi öğrendin. Şimdi hepsini birleştirip arka planda dizi sıralayan bir uygulama yazacağız.
Akış şu: ana dizi büyük bir sayı dizisini worker'a gönderir; worker sıralayıp sonucu geri gönderir; ana dizi onmessage ile yakalar. Büyük veriyi ArrayBuffer ile taşıyarak kopyalama maliyetini de unutuyoruz.
Uygulama Sorter worker'ı başlat ve dizi gönder
'sorter.js' dosyasından worker oluştur. Sonra worker.postMessage ile { numbers: [9, 3, 7] } gönder.
Örnek çözümü göster
const worker = new Worker('sorter.js');
worker.postMessage({ numbers: [9, 3, 7] });
Uygulama Büyük buffer'ı transfer et
buffer adında 1024 baytlık bir ArrayBuffer oluştur. Sonra worker.postMessage(buffer, [buffer]) ile sahipliği devrederek gönder.
Örnek çözümü göster
const buffer = new ArrayBuffer(1024);
worker.postMessage(buffer, [buffer]);
Kendini test et
-
Sıralama worker'ında akış nedir?
- Worker veriyi çeker, sonra sıralar
- Ana dizi sıralar, worker gösterir
- Ana dizi gönderir, worker sıralayıp geri gönderir
- Worker dosyaya yazar, ana dizi okur
Cevabı göster
Ana dizi gönderir, worker sıralayıp geri gönderir — Doğru! Ana dizi veriyi gönderir, worker sıralayıp sonuç döner.
-
Sonucu yakala
worker.____ = function(event) { console.log(event.data); };Cevabı göster
worker.onmessage = function(event) { console.log(event.data); };