Skip to content

observable_signal

ShenYj edited this page Apr 27, 2022 · 2 revisions

序列和信号

信号

RAC 的核心是信号,信号在 RAC 中是通过 RACSignal 来表示的,信号是数据流,可以被绑定和传递

在 RAC 中信号分为两种:冷信号热信号

  • 冷信号

    冷信号是被动的,只会在被订阅时向订阅者发送通知;

  • 热信号

    热信号是主动的,它会在任意时间发出通知,与订阅者的订阅时间无关。

也就是说冷信号所有的订阅者会在订阅时收到完全相同的序列;而订阅热信号之后,只会收到在订阅之后发出的序列。

热信号的订阅者能否收到消息取决于订阅的时间。

热信号在我们生活中有很多的例子,比如订阅杂志时并不会把之前所有的期刊都送到我们手中,
只会接收到订阅之后的期刊;而对于冷信号的话,举一个不恰当的例子,每一年的高考考生在
『订阅』高考之后,收到往年所有的试卷,并在高考之后会取消订阅

开发中的冷热信号

  • 冷信号:(例如网络请求)

    • 是被动的,只有当你订阅的时候,它才会发布消息
    • 只能一对一,当有不同的订阅者,消息是重新完整发送。
  • 热信号:(例如 UI 交互)

    • 是主动的,尽管你并没有订阅事件,但是它会时刻推送,
    • 可以有多个订阅者,是一对多,集合可以与订阅者共享信息。

序列

RxSwift 的核心是 Observable,不仅限于 Observable,还包含 RxSwift 提供的一些特征序列,如: Single、Completable、Maybe、Driver、ControlEvent。

在阅读 RxSwift 中文手册时,强调了这两个概念

了解冷热信号量的区别对于实战开发还有有必要的

对比

RAC 对冷信号和热信号的区别是很看重的,而 RxSwift 则不需要考虑是冷信号还是热信号(只能说没RAC那么重要,掌握每种序列的特征还是有必要的)

Observable 也是有冷热之分的: Hot and Cold Observables,是冷还是热,是通过publish和connect操作得到的

Hot Observable和Cold Observable

Getting Started

Social

Clone this wiki locally