CodeBlanks Logo Icon CodeBlanks

postMessage

JavaScript kursu · Uzman · Ders 21/63

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

  1. 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.

  2. Worker'a dizi gönder

    worker.postMessage({ numbers: ____ });
    Cevabı göster
    worker.postMessage({ numbers: [5, 2, 8] });
  3. postMessage eşleşmeleri

    worker.postMessage()
    ana diziden worker'a
    self.postMessage()
    worker'dan ana diziye
    structured clone
    veriyi kopyalar
    onmessage
    iletiyi yakalar

Uzman bölümündeki tüm dersler