use - subject rxjs get current value




Qual é a diferença entre Subject e BehaviorSubject? (2)

Comportamento

BehaviourSubject retornará o valor inicial ou o valor atual na Assinatura

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);

Com saída:

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

Sujeito

Assunto não retorna o valor atual na Assinatura. Aciona apenas em .next(value) chamada e retorna / produz o 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);

Com a seguinte saída no console:

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

Não estou claro sobre a diferença entre um assunto e um BehaviorSubject. É só que um BehaviorSubject tem a função getValue?