Skip to content

Operatoren für Multicasting

In RxJS stehen mehrere spezielle Operatoren zur Verfügung, um "Multicasting" zu realisieren - das Teilen der Ausgabe eines Observables mit mehreren Subscribern.

Diese Seite stellt aus der Perspektive der Operatoren die wichtigsten Multicasting-bezogenen Operatoren vor und organisiert deren Verwendungsunterschiede und Vorsichtsmaßnahmen.

❗ Für konzeptionelle Erklärungen von Multicast, strukturelle Beschreibungen unter Verwendung von Subject und konkrete Codebeispiele siehe bitte Multicasting-Mechanismus.

Hauptsächliche Multicasting-bezogene Operatoren

OperatorMerkmaleBemerkungen
share()Einfachster Multicast-Mechanismus. Intern äquivalent zu publish().refCount()Für die meisten Anwendungsfälle ausreichend
shareReplay()Zusätzlich zu Multicast werden die letzten Werte bei erneutem Abonnement bereitgestelltWenn Zustandswiederverwendung erforderlich ist
publish() + refCount()Multicast-Konfiguration mit kontrollierbarem AusführungstimingKlassische und flexible Konfiguration
multicast()Low-Level-API, die explizit ein Subject übergibtNützlich bei Verwendung von benutzerdefinierten Subjects

Vergleich der Multicasting-Muster

OperatorMerkmaleAnwendungsfall
share()Grundlegendes MulticastingGleichzeitige Nutzung in mehreren Komponenten
shareReplay(n)Puffert die letzten n WerteVerspätete Subscription/Zustandsfreigabe
publish() + refCount()Feinere Kontrolle möglichWenn erweiterte Kontrolle erforderlich ist
multicast(() => new Subject())Vollständige AnpassungWenn spezielle Subject-Typen benötigt werden

Vorsichtsmaßnahmen bei Verwendung von Multicasting

  1. Timing verstehen: Verstehen, dass sich die empfangenen Werte je nach Zeitpunkt des Subscription-Starts unterscheiden
  2. Lifecycle-Management: Besonders bei Verwendung von refCount wird der Stream beendet, wenn die Anzahl der Subscriber null wird
  3. Fehlerbehandlung: Wenn ein Fehler im gemulticasteten Observable auftritt, betrifft dies alle Subscriber
  4. Speicherverwaltung: Bei Verwendung von shareReplay etc. auf Memory Leaks achten

Veröffentlicht unter CC-BY-4.0-Lizenz.