postMessage
Ana diziden worker'a ve worker'dan ana diziye mesaj göndermeyi öğrenirsin.
postMessage ile mesajlaşma
Ana dizi ile worker arasında veri postMessage() yöntemiyle gönderilir. Bu yöntem, veriyi yapılandırılmış klonlama (structured clone) algoritmasıyla kopyalar; bu yüzden nesneler, diziler ve haritalar güvenle taşınır.
worker.postMessage({ numbers: [3, 1, 2] });Worker içinden ana diziye cevap vermek için self.postMessage() çağrılır. İleti bir mesaj kuyruğuna düşer; alıcı onmessage ile yakalar.
self.postMessage ile yanıt
Worker dosyası içinden ana diziye veri göndermek için self.postMessage(payload) ya da yalnızca postMessage(payload) çağrılır. self, worker'ın global nesnesini gösterir.
self.postMessage({ sorted: [1, 2, 3] });İleti hemen gitmez; olay kuyruğuna eklenir ve ana dizi müsait olunca işlenir. Ağır işlem bittikten sonra sonucu bu şekilde geri gönderirsin. Worker içinde console.log çıktısı ana diziye düşmez.
Uygulama Worker'a sipariş gönder
worker değişkenine { order: 42, ready: true } nesnesini postMessage ile gönder.
Örnek çözümü göster
worker.postMessage({ order: 42, ready: true });
Kendini test et
-
postMessage nasıl çalışır?
- Veriyi referans ile geçirir
- Veriyi yapılandırılmış klonlama ile kopyalar
- Yalnızca metin iletir
- Veriyi senkron olarak taşır
Cevabı göster
Veriyi yapılandırılmış klonlama ile kopyalar — Doğru! postMessage yapılandırılmış klonlama ile veriyi kopyalar.
-
Worker'a dizi gönder
worker.postMessage({ numbers: ____ });Cevabı göster
worker.postMessage({ numbers: [5, 2, 8] }); -
postMessage eşleşmeleri
- worker.postMessage()
- ana diziden worker'a
- self.postMessage()
- worker'dan ana diziye
- structured clone
- veriyi kopyalar
- onmessage
- iletiyi yakalar