Я не понимаю разницу между а Subject
и а BehaviorSubject
. Это просто BehaviorSubject
имеет getValue()
функцию?
251
BehaviorSubject содержит одно значение. Когда он подписан, он немедленно выдает значение. Предмет не имеет значения.
Пример темы (с RxJS 5 API):
const subject = new Rx.Subject();
subject.next(1);
subject.subscribe(x => console.log(x));
Консольный вывод будет пустым
Пример поведения субъекта:
const subject = new Rx.BehaviorSubject();
subject.next(1);
subject.subscribe(x => console.log(x));
Консольный выход: 1
К тому же:
BehaviorSubject
может быть создан с начальным значением: новый Rx.BehaviorSubject(1)
ReplaySubject
, хотите ли вы, чтобы объект содержал более одного значения
BehaviourSubject
BehaviourSubject вернет начальное значение или текущее значение в подписке
С выходом:
Тема
Субъект не возвращает текущее значение в подписке. Он срабатывает только при
.next(value)
вызове и возврате / выводеvalue
Со следующим выводом на консоль:
источник
subject.next(3);
Я только что создал проект, который объясняет разницу между всеми предметами :
https://github.com/piecioshka/rxjs-subject-vs-behavior-vs-replay-vs-async
источник
Это может помочь вам понять.
источник
BehaviorSubject
сохраняет в памяти последнее значение, которое было получено наблюдаемой. ОбычныйSubject
нет.BehaviorSubject
какReplaySubject
с размером буфера 1.источник