rxjs学习笔记: 单播和多播

rxjs的Subject具有多播的特性。对于单播和多播怎么理解呢?
更新于: 2021-12-19 12:57:28

单播

单播是说,一个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));

  1. 简单的说,当调用 observable.subscribe 时,create 的传入参数 function subscribe 会被调用一次。
  2. 也就是说,一个 subscribe 只能被一个 observer 消费。这就是单播。
  3. 这些 observer 之间相互不影响(不要有全局变量),它们虽然订阅同一个 obserable
  4. 但是,它们仅仅是利用了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);

参考