Je ne suis pas clair sur la différence entre un object et un object comportement. Est-ce juste qu’un BehaviorSubject a la fonction getValue?
Un BehaviorSubject contient une valeur. Quand il est souscrit, il émet la valeur immédiatement. Un sujet ne contient 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 de comportement:
const subject = new Rx.BehaviorSubject(); subject.next(1); subject.subscribe(x => console.log(x));
Sortie de la console: 1
En outre:
BehaviourSubject renvoie la valeur initiale ou la valeur actuelle sur l’abonnement
var subject = new Rx.BehaviorSubject(0); // 0 is the initial value subject.subscribe({ next: (v) => console.log('observerA: ' + v) // output initial value, then new values on `next` sortingggers }); subject.next(1); // output new value 1 for 'observer A' subject.next(2); // output new value 2 for 'observer A', current value 2 for 'Observer B' on subscription subject.subscribe({ next: (v) => console.log('observerB: ' + v) // output current value 2, then new values on `next` sortingggers }); subject.next(3);
Avec sortie:
observerA: 0 observerA: 1 observerA: 2 observerB: 2 observerA: 3 observerB: 3
L’object ne renvoie pas la valeur actuelle sur l’abonnement. Il ne se déclenche que sur l’ .next(value)
et retourne / .next(value)
la value
var subject = new Rx.Subject(); subject.next(1); //Subjects will not output this value subject.subscribe({ next: (v) => console.log('observerA: ' + v) }); subject.subscribe({ next: (v) => console.log('observerB: ' + v) }); subject.next(2); subject.next(3);
Avec la sortie suivante sur la console:
observerA: 2 observerB: 2 observerA: 3 observerB: 3