No tengo clara la diferencia entre a Subjecty a BehaviorSubject. ¿Es solo que a BehaviorSubjecttiene 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)ReplaySubjectsi 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 elvalueCon 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
BehaviorSubjectconserva en la memoria el último valor emitido por el observable. Un regularSubjectno lo hace.BehaviorSubjectes comoReplaySubjectcon un tamaño de búfer de 1.fuente