postMessage
- Node.js kursu
- İleri seviye
- Ders 9/83
- 5 dk
postMessage ile worker iletişimini öğrenirsin.
postMessage
postMessage, iş parçacıkları arasında mesaj gönderen temel metoddur. İşçi tarafta parentPort.postMessage(data) ile anaya veri gönderirsin. Ana tarafta worker.postMessage(data) ile işçiye veri gönderirsin.
Gönderilen veri kopyalanır, paylaşılaz; bu yüzden büyük nesneler için SharedArrayBuffer tercih edilir. Mesajlar JSON olarak serileştirilebilen düz nesneler olmalıdır; fonksiyon veya sınıf örneği gönderemezsin.
parentPort.postMessage
İşçi iş parçacığında parentPort anaya bağlanan portu temsil eder. parentPort.postMessage(result) çağrısı sonucu anaya gönderir. Ana tarafta worker.on("message", handler) ile bu mesaj yakalanır.
İşçi bittiğinde portu kapatmak iyi bir alışkanlıktır. parentPort.close() kanalı kapatır ve exit olayını tetikler. Bu, kaynak sızıntılarını önler.
Uygulama parentPort null mu kontrol et
parentPort'u worker_threads'den içe aktar. parentPort === null sonucunu yaz. (Ana iş parçacığında parentPort null'dur.)
Başlangıç kodu
// modülü içe aktar, portu al
// null mı kontrol etÖrnek çözüm
const { parentPort } = require("worker_threads");
console.log(parentPort === null);Beklenen çıktı
true
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
postMessage |
Mesaj gönderir |
parentPort |
Anaya kanal |
worker.on("message") |
Mesaj bekler |
message olayı |
Mesaj yakalar |
2 Metod adını tamamla
parentPort.____({ result: 42 })
parentPort.postMessage({ result: 42 })
Açıklama: parentPort.postMessage anaya mesaj gönderir.
3 parentPort.postMessage ne yapar?
- Anaya mesaj gönderir Doğru cevap
- İşçiyi durdurur
- Dosya okur
- Port kapatır
Açıklama: parentPort.postMessage anaya mesaj gönderir.