Rxjs - BehaviorSubject

77 阅读1分钟

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