Rxjs|Rxjs 里 Subject 和 BehaviorSubject 的区别
通过一个实际的例子来理解。
下面的代码,创建了一个新的 subject,然后调用 next 方法,多播给其所有的监听者。
import { Subject } from 'rxjs';
const jerry = new Subject();
const subscription = jerry.subscribe((data) => console.log(data));
console.log('ok');
jerry.next(111);
jerry.next(222);
subscription.unsubscribe();
console.log('?');
jerry.next(333);
上文的例子,会打印 111,222
文章图片
如果 Subject 在被订阅之前就开始多播(即下图第5行的 111),那么这些多播值,不会被开始多播之后的订阅者收到。如下图所示:订阅者只会打印其订阅 subject 之后收到的多播值 222:
文章图片
使用 BehaviorSubject,就可以避免这个问题:即使订阅者订阅该 subject 之前,后者就开始调用 next 进行多播,这些多播值同样能够被订阅者接收到:
文章图片
【Rxjs|Rxjs 里 Subject 和 BehaviorSubject 的区别】更多Jerry的原创文章,尽在:"汪子熙":
文章图片
推荐阅读
- 你到家了吗
- 闲杂“细雨”
- 村里的故事|村里的故事 --赵大头
- 情节33.0
- 生命过客——第10章|生命过客——第10章 初为人母
- 你眼里的不公平,其实很公平
- 画廊百里若江南
- 抱着梦的无眠
- 在古城迷惑如何觅食吗(看这里!)
- 时光,是行走在文字里的眷恋