Rx.Observable: Cold vs Hot

2020-09-29  本文已影响0人  Even_Cyw

1. 前言:Observable

Rx.Observable: 可观察对象。简单理解就是一个可以被subscribe的对象,它作为数据源会不断的通过next产生新的数据。

举个例子:

Rx.Observable.create(observer => {
    observer.next(1);
  observer.next(2);
  observer.next(3);
}).subscribe(count => {console.log(count)})

2. Cold 和 Hot

Rxjs中把观察者(Observable)区分为热观察者(Hot Observable)以及冷观察者(Cold Observable)。

定义:

理解:

​ 将Observable看作一个Event Emiter,它要做的是将新数据往外抛,那么实际上它还需要一个产生数据的Producer。我们理解Cold/Hot观察者就可以理解为:

// cold
Rx.Observable.create(observer => {
    const producer = new Producer()
    ...
})

// hot
const producer = new Producer()
Rx.Observable.create(observer => {
    ...
})

形象的比喻:

​ 把Observable看作一个音乐播放器:

3. 使用场景

​ 实际上大部分时候我们都是使用的cold observable,每个订阅者都可以完整的接收到观察对象的数据,当然也有使用到Hot的情况,同样以计数器来说:

计数器在一开始就启动

以上是对于Cold和Hot Observable的一些个人总结,有不对的地方欢迎指正。谢谢。

上一篇 下一篇

猜你喜欢

热点阅读