Subject的变体之一是BehaviorSubject,他有一个"the current value"的概念。它存储发送给其使用者的最新值,每当一个新的Observer订阅时,它将立即接收来自BehaviorSubject的"current value"。
BehaviorSubject对于表示“随时间变化的值”很有用。例如,一个生日事件流是一个Subject,但是一个人的年龄是一个BehaviorSubject
在下面的示例中,用0初始化BehaviorSubject,该值是第一个Observer在订阅时接收到的值。第二个Observer接收2,尽管它是在发送2之后订阅的。
const subject = new BehaviorSubject(0); // 0 is the initial value
subject.subscribe({
next: (v) => console.log(`observerA: ${v}`),
});
subject.next(1);
subject.next(2);
subject.subscribe({
next: (v) => console.log(`observerB: ${v}`),
});
subject.next(3);
// Logs
// observerA: 0
// observerA: 1
// observerA: 2
// observerB: 2
// observerA: 3
// observerB: 3