Obserwowalne i podmiotowe są obserwowalne, co oznacza, że obserwator może je śledzić. ale oba mają pewne unikalne cechy. Ponadto istnieją w sumie 3 rodzaje przedmiotów, z których każdy ponownie ma unikalne cechy. spróbujmy zrozumieć każdy z nich.
praktyczny przykład znajdziesz tutaj na stackblitz .
(Musisz sprawdzić konsolę, aby zobaczyć rzeczywiste wyjście)
Observables
Są zimni: kod jest wykonywany, gdy ma przynajmniej jednego obserwatora.
Tworzy kopię danych: Observable tworzy kopię danych dla każdego obserwatora.
Jednokierunkowy: Obserwator nie może przypisać wartości do obserwowalnej (origin / master).
Subject
Są gorące: kod jest wykonywany, a wartość jest rozgłaszana, nawet jeśli nie ma obserwatora.
Udostępnia dane: Te same dane są udostępniane wszystkim obserwatorom.
dwukierunkowy: Obserwator może przypisać wartość do obserwowalnej (origin / master).
Jeśli używasz tematu, tracisz wszystkie wartości, które są nadawane przed utworzeniem obserwatora. A więc nadchodzi powtórka
ReplaySubject
Są gorące: kod jest wykonywany, a wartość przekazywana, nawet jeśli nie ma obserwatora.
Udostępnia dane: Te same dane są udostępniane wszystkim obserwatorom.
dwukierunkowy: Obserwator może przypisać wartość do obserwowalnej (origin / master). plus
Odtwórz strumień wiadomości: bez względu na to, czy subskrybujesz temat powtórki, otrzymasz wszystkie nadawane wiadomości.
W temacie i powtórzeniu nie można ustawić wartości początkowej na możliwą do zaobserwowania. A więc nadchodzi Obiekt Behawioralny
BehaviorSubject
Są gorące: kod jest wykonywany, a wartość przekazywana, nawet jeśli nie ma obserwatora.
Udostępnia dane: Te same dane są udostępniane wszystkim obserwatorom.
dwukierunkowy: Obserwator może przypisać wartość do obserwowalnej (origin / master). plus
Odtwórz strumień wiadomości: bez względu na to, czy subskrybujesz temat powtórki, otrzymasz wszystkie nadawane wiadomości.
Możesz ustawić wartość początkową: Możesz zainicjalizować obserwowalną wartość domyślną.