Nie mam jasności co do różnicy między Subject
a a BehaviorSubject
. Czy to po prostu, że BehaviorSubject
ma getValue()
funkcję?
250
Obiekt BehaviourSubject zawiera jedną wartość. Po zasubskrybowaniu natychmiast emituje wartość. Podmiot nie ma wartości.
Przykład tematu (z interfejsem API RxJS 5):
const subject = new Rx.Subject();
subject.next(1);
subject.subscribe(x => console.log(x));
Dane wyjściowe konsoli będą puste
Przykład zachowania:
const subject = new Rx.BehaviorSubject();
subject.next(1);
subject.subscribe(x => console.log(x));
Dane wyjściowe konsoli: 1
Dodatkowo:
BehaviorSubject
można utworzyć z wartością początkową: nowa Rx.BehaviorSubject(1)
ReplaySubject
czy chcesz, aby obiekt zawierał więcej niż jedną wartość
BehaviourSubject
BehaviourSubject zwróci wartość początkową lub bieżącą wartość subskrypcji
Z wyjściem:
Przedmiot
Podmiot nie zwraca bieżącej wartości w ramach subskrypcji. Uruchamia się tylko podczas
.next(value)
połączenia i zwraca / wyprowadzavalue
Z następującymi danymi wyjściowymi na konsoli:
źródło
subject.next(3);
Właśnie stworzyłem projekt, który wyjaśnia, jaka jest różnica między wszystkimi przedmiotami :
https://github.com/piecioshka/rxjs-subject-vs-behavior-vs-replay-vs-async
źródło
Pomoże ci to zrozumieć.
źródło
BehaviorSubject
zachowuje w pamięci ostatnią wartość, która została wyemitowana przez obserwowalne. ZwykłySubject
nie.BehaviorSubject
jest jakReplaySubject
przy buforze o rozmiarze 1.źródło