SubjectとBehaviorSubjectの違い
違いは、BehaviorSubjectの方が、初期値もしくは、現在の値を保持していること。
具体例
まずはSubjectのサンプルコードになります。
const subject = new Subject<number>();
// この場合だと、コンソールログには、1, 2と表示される
subject.subscribe((value) => console.log(value));
subject.next(1);
subject.next(2);
behaivorSubjectの場合、インスタンス化する際に、以下のように初期値を設定することができます。
behaivorSubjectでは、subscribeで、即座に初期値、もしくは現在の供給されている最新値で、処理を実行します。
const behaviorSubject = new BehaviorSubject<number>(0);
// コンソールログには、0, 1, 2と表示される。
behaviorSubject.subscribe((value) => console.log(value))
behaviorSubject.next(1);
behaviorSubject.next(2);
既にnextメソッドで供給している場合の例は以下です。
const behaviorSubject = new BehaviorSubject<number>(0);
behaviorSubject.next(1);
behaviorSubject.next(2);
// コンソールログには、2と表示される。
behaviorSubject.subscribe((value) => console.log(value))
現在供給されている値で即座に、subscribeの処理を実行したい場合には、BehaviorSubjectを使うのがよい。