example ejemplo rxjs

rxjs - ejemplo - ¿Cuál es la diferencia entre Subject y BehaviorSubject?



rxjs subject (3)

Comportamiento Sujeto

BehaviourSubject devolverá el valor inicial o el valor actual en la suscripción

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` triggers }); 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` triggers }); subject.next(3);

Con salida:

observerA: 0 observerA: 1 observerA: 2 observerB: 2 observerA: 3 observerB: 3

Tema

El asunto no devuelve el valor actual en la Suscripción. Se dispara solo en la .next(value) y devuelve / emite el 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);

Con el siguiente resultado en la consola:

observerA: 2 observerB: 2 observerA: 3 observerB: 3

No tengo clara la diferencia entre un Sujeto y un Sujeto de Comportamiento. ¿Es solo que un BehaviorSubject tiene la función getValue?



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 el valor inicial: nuevo Rx.BehaviorSubject (1)
  • Considere ReplaySubject si desea que el sujeto tenga más de un valor