Avatar ·

RxJS中Subject与BehaviorSubject的区别?TypeScript示例

大家好!我开始学习Angular和RxJS,对Subject和BehaviorSubject感到困惑。似乎两者都用于创建可发送值的Observable,但我不理解关键区别。

这是我写的示例。当我使用Subject时,在发送值之后订阅的订阅者不会收到该值:

import { Subject } from 'rxjs';

const subject = new Subject<number>();

subject.next(1); // 在订阅前发送值

subject.subscribe({
  next: (v) => console.log('Subject订阅者A:', v)
});

subject.next(2); // 在订阅后发送
// 结果:Subject订阅者A: 2
// 值1丢失

而当我使用BehaviorSubject时,稍后订阅的订阅者会收到最后一个值:

import { BehaviorSubject } from 'rxjs';

const behaviorSubject = new BehaviorSubject<number>(0); // 需