Je ne suis pas clair sur la différence entre a Subject
et a BehaviorSubject
. Est-ce juste que a BehaviorSubject
a la getValue()
fonction?
250
Un BehaviorSubject contient une valeur. Lorsqu'il est souscrit, il émet la valeur immédiatement. Un sujet n'a pas de valeur.
Exemple de sujet (avec l'API RxJS 5):
const subject = new Rx.Subject();
subject.next(1);
subject.subscribe(x => console.log(x));
La sortie de la console sera vide
Exemple BehaviorSubject:
const subject = new Rx.BehaviorSubject();
subject.next(1);
subject.subscribe(x => console.log(x));
Sortie console: 1
En outre:
BehaviorSubject
peut être créé avec la valeur initiale: nouveau Rx.BehaviorSubject(1)
ReplaySubject
si vous voulez que le sujet contienne plus d'une valeur
BehaviourSubject
BehaviourSubject renverra la valeur initiale ou la valeur actuelle lors de l'abonnement
Avec sortie:
Matière
Le sujet ne renvoie pas la valeur actuelle lors de l'abonnement. Il ne déclenche que sur
.next(value)
appel et retourne / sort levalue
Avec la sortie suivante sur la console:
la source
subject.next(3);
Je viens de créer un projet qui explique quelle est la différence entre tous les sujets :
https://github.com/piecioshka/rxjs-subject-vs-behavior-vs-replay-vs-async
la source
Cela pourrait vous aider à comprendre.
la source
BehaviorSubject
garde en mémoire la dernière valeur émise par l'observable. Un habituéSubject
ne le fait pas.BehaviorSubject
est commeReplaySubject
avec une taille de tampon de 1.la source