No tengo clara la diferencia entre a Subject
y a BehaviorSubject
. ¿Es solo que a BehaviorSubject
tiene la getValue()
función?
250
Un BehaviorSubject tiene un valor. Cuando se suscribe, emite el valor inmediatamente. Un sujeto no tiene un valor.
Ejemplo de tema (con RxJS 5 API):
const subject = new Rx.Subject();
subject.next(1);
subject.subscribe(x => console.log(x));
La salida de la consola estará vacía
Ejemplo de BehaviorSubject:
const subject = new Rx.BehaviorSubject();
subject.next(1);
subject.subscribe(x => console.log(x));
Salida de consola: 1
Adicionalmente:
BehaviorSubject
se puede crear con valor inicial: nuevo Rx.BehaviorSubject(1)
ReplaySubject
si desea que el sujeto tenga más de un valor
Comportamiento Sujeto
BehaviourSubject devolverá el valor inicial o el valor actual en la suscripción
Con salida:
Tema
El asunto no devuelve el valor actual de la Suscripción. Se activa solo en la
.next(value)
llamada y devuelve / emite elvalue
Con el siguiente resultado en la consola:
fuente
subject.next(3);
Acabo de crear un proyecto que explica cuál es la diferencia entre todas las materias :
https://github.com/piecioshka/rxjs-subject-vs-behavior-vs-replay-vs-async
fuente
Podría ayudarte a entender.
fuente
BehaviorSubject
conserva en la memoria el último valor emitido por el observable. Un regularSubject
no lo hace.BehaviorSubject
es comoReplaySubject
con un tamaño de búfer de 1.fuente