Beobachtbar und Subjekt sind beide beobachtbar, dh ein Beobachter kann sie verfolgen. aber beide haben einige einzigartige Eigenschaften. Ferner gibt es insgesamt 3 Arten von Themen, von denen jedes wieder einzigartige Eigenschaften aufweist. Lassen Sie uns versuchen, jeden von ihnen zu verstehen.
Das praktische Beispiel finden Sie hier auf stackblitz .
(Sie müssen die Konsole überprüfen, um die tatsächliche Ausgabe zu sehen.)
Observables
Sie sind kalt: Code wird ausgeführt, wenn sie mindestens einen einzigen Beobachter haben.
Erstellt eine Kopie der Daten: Observable erstellt eine Kopie der Daten für jeden Beobachter.
Unidirektional: Der Beobachter kann dem beobachtbaren Wert (Ursprung / Master) keinen Wert zuweisen.
Subject
Sie sind heiß: Code wird ausgeführt und der Wert wird gesendet, auch wenn kein Beobachter vorhanden ist.
Daten teilen : Dieselben Daten werden von allen Beobachtern geteilt.
bidirektional: Der Beobachter kann dem beobachtbaren Wert (Ursprung / Master) einen Wert zuweisen.
Wenn Sie den Betreff verwenden, verpassen Sie alle Werte, die vor der Erstellung des Beobachters gesendet werden. Hier kommt also das Thema "Wiedergabe"
ReplaySubject
Sie sind heiß: Code wird ausgeführt und der Wert wird gesendet, auch wenn kein Beobachter vorhanden ist.
Daten teilen : Dieselben Daten werden von allen Beobachtern geteilt.
bidirektional: Der Beobachter kann dem beobachtbaren Wert (Ursprung / Master) einen Wert zuweisen. Plus
Nachrichtenstrom erneut abspielen: Unabhängig davon, wann Sie den Betreff für die Wiedergabe abonnieren, erhalten Sie alle gesendeten Nachrichten.
In Betreff und Betreff wiedergeben können Sie den Anfangswert nicht auf beobachtbar setzen. Hier kommt also das Verhaltensthema
BehaviorSubject
Sie sind heiß: Code wird ausgeführt und der Wert wird gesendet, auch wenn kein Beobachter vorhanden ist.
Daten teilen : Dieselben Daten werden von allen Beobachtern geteilt.
bidirektional: Der Beobachter kann dem beobachtbaren Wert (Ursprung / Master) einen Wert zuweisen. Plus
Nachrichtenstrom erneut abspielen: Unabhängig davon, wann Sie den Betreff für die Wiedergabe abonnieren, erhalten Sie alle gesendeten Nachrichten.
Sie können den Anfangswert festlegen: Sie können das Observable mit dem Standardwert initialisieren.