© Syda Productions/Shutterstock.com
Einblick in die interne Architektur von RxJS und seinen Operatoren

Die Anatomie von RxJS-Operatoren


Operatoren stellen einen Mechanismus zur Verfügung, um komplexe Funktionen in les- und wartbarer Weise zu implementieren. Sie bieten einen immensen Mehrwert bei der Arbeit mit RxJS. Allerdings wissen nur wenige über die interne Implementierung von Operatoren und die dahinterliegenden Gründe Bescheid.

RxJS ist die De-facto-Standardbibliothek für reaktive Programmierung im JavaScript-Ökosystem. Sie ist bekanntermaßen komplex und insbesondere die Etablierung einer reaktiven Denkweise ist eine Herausforderung. Reaktive Programmierung befasst sich im Allgemeinen mit der Propagierung von Veränderungen. RxJS implementiert diesen Mechanismus der Änderungspropagierung durch die Observable-Entität. Operatoren können auf Observables angewendet werden, um Manipulationen durchzuführen und ein Observable mit einem bestimmten Verhalten zu erweitern. Solche Operatoren können auf ein Observable angewendet werden, indem man sie an die pipe-Methode der Observable-Instanz übergibt. Die meisten Entwickler, die RxJS nutzen, haben bereits regelmäßig Operatoren verwendet.

Allein die große Vielfalt von Operatoren erschwert das Erlernen von RxJS deutlich. Noch schwieriger ist es, herauszufinden, welche Operatoren zur Lösung eines bestimmten Problems geeignet sind. Alle Operatoren auf einmal zu erlernen, mag als der schnellste Weg erscheinen, um RxJS zu meistern, jedoch ist ein fundamentales Verständnis für die interne Architektur der Operatoren deutlich zielführender. Zu Beginn sollten wir zunächst klären, was überhaupt als Operator angesehen werden kann.

Streng definiert ist ein Operator nur eine Funktion, die eine bestimmte Schnittstelle implementiert und sich daher an eine bestimmte Struktur halten muss. Das bedeutet jedoch nicht, dass alle von RxJS bereitgestellten Funktionen Operatoren sind. Aus meiner Sicht müssen Funktionen zwei Kriterien erfüllen, damit sie als Operator betrachtet werden können:

  1. Ein Operator muss komponierbar sein.

  2. Ein Operator muss das Verhalten eines Observables erweitern.

Operatorkriterien

Ein Operator muss komponierbar sein

Komposition bedeutet, dass Operatoren auf ein bestehendes Observable angewendet werden müssen und ein neues Observable zurückgeben wird. Obwohl Funktionen wie from, of oder fromEvent ein neues Observable erstellen, werden sie nicht als Operatoren betrachtet, da sie nicht auf bestehende Observables angewendet werden können. Wenn eine Funktion nicht komponierbar ist, ist es nicht möglich, sie innerhalb der pipe-Methode zu nutzen.

E...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang