В чем разница между субъектом и BehaviorSubject?

Я'м не понимаю разницу между подлежащим и BehaviorSubject. Это просто, что BehaviorSubject имеет функцию getValue метод?

Решение

В BehaviorSubject имеет одно значение. Когда его выписывали, он сразу выдает значение. Предмет не'т иметь значение.

Предмет примере (с RxJS 5 по API):

const subject = new Rx.Subject();
subject.next(1);
subject.subscribe(x => console.log(x));

Вывод на консоль будет пустым

Пример BehaviorSubject:

const subject = new Rx.BehaviorSubject();
subject.next(1);
subject.subscribe(x => console.log(x));

Вывод на консоль: 1

Кроме того:

  • BehaviorSubject могут быть созданы с начальным значением: новый RX.BehaviorSubject(1)
  • Рассмотреть ReplaySubject если вы хотите, чтобы держать больше чем одно значение
Комментарии (3)

BehaviourSubject

BehaviourSubject вернется первоначальная стоимость или текущая стоимость по подписке

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

С выходом:

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

Тема

При условии не возврата текущей стоимости на подписку. Это срабатывает только на .следующий(значение) вызов и возврат/выход "стоимость"

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

С следующий вывод на консоль:

observerA: 2
observerB: 2
observerA: 3
observerB: 3
Комментарии (6)

Я просто создали проект, которые объясняют, что такое разница между всем предметам:<БР/> https://github.com/piecioshka/rxjs-subject-vs-behavior-vs-replay-vs-async

Комментарии (0)