Subject 和 BehaviorSubject 的区别

javascript

两者都是rxjs中的Observable对象,同时也是Observer对象,但是也有些细微区别。Subject 没有初始值,在订阅的时候不会触发。BehaviorSubject有初始值,订阅的时候会马上触发。

例如:

import { BehaviorSubject, Subject } from 'rxjs';

public a = new BehaviorSubject<number>(1);
public b = new Subject<number>(); 

a.subscribe(x=> { console.log(`a: ${x}`); });
b.subscribe(x=> { console.log(`b:${x}`); });

a.next(2);
b.next(2);

输出为

a:1 //初始值
a:2
b:2

除了Subject 和 BehaviorSubject, rxjs还有ReplaySubject,AsyncSubject,具体可参考https://rxjs.dev/guide/subject

Related Posts

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注