removeListener
- Node.js kursu
- Orta seviye
- Ders 4/116
- 5 dk
.removeListener ile dinleyici kaldırmayı öğrenirsin.
removeListener
removeListener metodu daha önce eklenmiş bir dinleyiciyi kaldırır. İmza: emitter.removeListener(olayAdı, dinleyici). Kısaltması off ile aynı işi yapar.
Önemli nokta: dinleyici olarak aynı fonksiyon referansını vermelisin. Anonim fonksiyonlar her seferinde yeni referans ürettiği için kaldırılamaz. Bu yüzden kaldırılacak dinleyiciyi önce bir değişkene atarsın: const handler = () => console.log("bip");. Sonra emitter.removeListener("ses", handler) ile kaldırırsın. Bellek sızıntısını önlemek için gereksiz dinleyicileri temizlemek iyi bir alışkanlıktır.
Dinleyici referansı
Anonim bir dinleyici doğrudan on içine yazılırsa referansı kaybolur: emitter.on("ses", () => {}). Bu dinleyiciyi sonra kaldıramazsın. Çözüm: fonksiyonu önce tanımla, sonra hem on'a hem removeListener'a aynı değişkeni ver.
Örnek: const handler = () => console.log("bip"); emitter.on("ses", handler); emitter.emit("ses"); emitter.removeListener("ses", handler); emitter.emit("ses");. İlk emit bip yazdırır; ikinci emit hiçbir şey yazdırmaz çünkü dinleyici kaldırıldı. Bu denetim olay akışını yönetmenin temel yoludur.
Uygulama Dinleyici ekle, çağır, kaldır
handler adında bir fonksiyon tanımla: console.log("Bip!") yazsın. emitter.on("beep", handler) ile ekle. emit("beep") çağır. Sonra removeListener("beep", handler) ile kaldır ve tekrar emit("beep") çağır. Çıktı yalnızca bir Bip! olmalı.
Başlangıç kodu
// emitter örneğini oluştur
// buraya yaz
// handler fonksiyonunu tanımla
// buraya yaz
// "beep" olayına dinleyici ekle, bir kez fırlat, kaldır, tekrar fırlat
// buraya yazÖrnek çözüm
const { EventEmitter } = require("events");
const emitter = new EventEmitter();
const handler = () => console.log("Bip!");
emitter.on("beep", handler);
emitter.emit("beep");
emitter.removeListener("beep", handler);
emitter.emit("beep");Beklenen çıktı
Bip!
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Metodu rolüne eşle
| Kavram | Anlamı |
|---|---|
removeListener |
Dinleyiciyi kaldırır |
off |
removeListener'ın kısaltması |
on |
Dinleyici ekler |
emit |
Olayı fırlatır |
2 removeListener için ne gerekir?
emitter.removeListener(name, fn)- Yalnızca olay adı
- Olayın yayınlanma sayısı
- Olay adı ve dinleyici sayısı
- Aynı fonksiyon referansı Doğru cevap
Açıklama: Aynı fonksiyon referansı verilmelidir.
3 Kaldırma satırını tamamla
emitter.removeListener("ses", ____);
emitter.removeListener("ses", handler);
Açıklama: Aynı handler referansı verilir.