Das ReactiveX (häufig kurz Rx) ist ein Programmiermodell und eine Familie von Bibliotheken für reaktive, ereignisbasierte Programmierung. Sein zentrales Konzept ist das Observable: ein Strom von Werten, der über die Zeit Werte ausgeben kann — null, einen, viele — und an dessen Verlauf sich Konsumenten anhängen.

ReactiveX existiert in Implementierungen für viele Sprachen: RxJS (JavaScript/TypeScript), RxJava (JVM), RxSwift, Rx.NET, RxKotlin und weitere. Die Konzepte und Operator-Namen sind weitgehend identisch — wer Rx in einer Sprache beherrscht, findet sich in den anderen schnell zurecht.

Kernkonzepte

ReactiveX baut auf wenigen Bausteinen auf:

  • Observable — die Quelle eines Wertestroms. Kann synchron oder asynchron sein, einzelne Werte oder einen unendlichen Strom liefern.
  • Observer — wer auf den Strom hört. Reagiert auf next (neuer Wert), error (Abbruch) und complete (Ende).
  • Subscription — die Verbindung zwischen Observable und Observer. Lässt sich beenden, um Lecks zu vermeiden.
  • Operators — Funktionen, die einen Strom in einen anderen umformen. map, filter, merge, switchMap, debounceTime und Dutzende mehr.
  • Subject — eine Mischform: gleichzeitig Observable und Observer, oft als Bus für Ereignisse.

Wo es glänzt

ReactiveX ist besonders stark, wenn ereignis- oder zeitorientierte Daten zusammenfließen müssen:

  • Benutzeroberflächen — Tippeingaben, Klicks, Hover-Verhalten als Ströme behandeln.
  • API-Aufrufe — Cancelation, Retry, Backoff, Kombination paralleler Anfragen.
  • WebSockets und Server-Sent Events — eingehende Nachrichten als unendliche Ströme verarbeiten.
  • State-Management — abgeleitete Werte aus mehreren Quellen mit klaren Regeln berechnen.

In Angular ist RxJS Teil des Frameworks; HTTP-Aufrufe, Routing-Ereignisse und Form-Eingaben sind Observables. Wer Angular ernsthaft nutzt, kommt an Rx nicht vorbei.

Lernkurve und Trade-offs

ReactiveX hat eine steile Lernkurve. Die Operator-Vielfalt ist groß, manche unterscheiden sich nur subtil (switchMap vs. mergeMap vs. concatMap). Schlecht dosiert wirken Rx-Codebasen schnell unleserlich; sauber eingesetzt sind sie elegant und robust. Für viele Standardfälle reichen heute auch Promises mit async/await oder einfachere Reactive-Ansätze (Signals, Stores) — Rx zahlt sich vor allem dort aus, wo wirklich Ströme von Ereignissen fließen.

/ Weiter

Zurück zu Coding

Zur Übersicht