Entwurfsmuster · Middle · Frage 2 von 75

Warum liefert subscribe in einer Observer-Implementierung meist eine Funktion zum Abbestellen?

function subscribe(listener) {
  listeners.add(listener);
  return () => listeners.delete(listener);
}
Antwort zeigen

Richtige Antwort: Damit der Abonnent leicht abbestellen und ein Speicherleck vermeiden kann

Erklärung

Die gelieferte Funktion passt genau ins Aufräumen von useEffect: useEffect(() => store.subscribe(fn), []). Ohne Abbestellen hält das Subjekt Referenzen auf Callbacks unmounteter Komponenten - ein Leck und zusätzliche Aufrufe. Redux, Zustand und useSyncExternalStore arbeiten so.

Zum Weiterlesen

Fehler in der Frage

Entwurfsmuster · Middle · Frage 2

Teste dich selbst

Mach den Test Entwurfsmuster · Middle: Fragen und Antworten werden gemischt, und am Ende wartet eine Übersicht der Fehler.

Diesen Test machen