rxjs学习笔记: 单播和多播
rxjs的Subject具有多播的特性。对于单播和多播怎么理解呢?
单播
单播是说,一个observable只能被一个观察者消费。还是用代码说话:
import { Observable, Subject } from 'rxjs';
let observable = Observable.create(function subscribe(obsever) {
obsever.next(1);
obsever.next(2);
});
observable.subscribe((v) => console.log('v1:', v));
observable.subscribe((v) => console.log('v2:', v));
- 简单的说,当调用
observable.subscribe
时,create
的传入参数function subscribe
会被调用一次。 - 也就是说,一个
subscribe
只能被一个observer
消费。这就是单播。 - 这些
observer
之间相互不影响(不要有全局变量),它们虽然订阅同一个obserable
- 但是,它们仅仅是利用了
observable
的处理数据的能力,至于数据源、处理结果,都是独立
的。
多播
- 就是一个有一个东西,可以被多个观察者同时订阅。
- 这个时候要引进rxjs里面的Subject,它所创造的实例,能被多个观察者消费。
先看一个示例
import { Observable, Subject } from 'rxjs';
let observable = Observable.create(function subscribe(obsever) {
obsever.next(1);
obsever.next(2);
});
let subject = new Subject();
subject.subscribe((v) => console.log('v1:', v));
subject.subscribe((v) => console.log('v2:', v));
observable.subscribe(subject);