Node.js
removeListener
.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ı.
Örnek çözümü göster
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");
Kendini test et
-
Metodu rolüne eşle
- removeListener
- Dinleyiciyi kaldırır
- off
- removeListener'ın kısaltması
- on
- Dinleyici ekler
- emit
- Olayı fırlatır
-
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ı
Cevabı göster
Aynı fonksiyon referansı — Aynı fonksiyon referansı verilmelidir.
-
Kaldırma satırını tamamla
emitter.removeListener("ses", ____);
Cevabı göster
emitter.removeListener("ses", handler);
Sıradaki ders: error olayı