RxSwift

RxSwift核心

Rx介绍

  • 基于异步 Event(事件)序列的响应式编程
  • 简化异步编程方法,并提供更优雅的数据绑定

Observable - 产生事件

创建序列

Observable.create

Event - 事件

  • onNext
  • onError
  • onCompleted

特征序列

Single

  • 它只能发出一个元素,或者一个Error事件
  • 场景:网络请求,返回应答或错误
  1. 创建同Observable相似
  2. 订阅提供SingleEvent枚举
    • success - 产生一个单独的元素
    • error 产生一个错误

Completable

  • 它只能发出一个completed事件,或者一个Error事件
  • 场景:判断任务是否完成
  1. 创建同Observable相似
  2. 订阅提供SingleEvent枚举
    • completed - 产生完成事件
    • error 产生一个错误

Maybe

  • 发出一个元素或者一个 completed 事件或者一个 error 事件
  • 场景:如果你遇到那种可能需要发出一个元素,又可能不需要发出时,就可以使用 Maybe

Driver

  • 不会产生 error 事件
  • 一定在 MainScheduler 监听(主线程监听)

1.创建普通序列.asDriver()
2.订阅使用drive

Signal

  • 不会产生 error 事件
  • 一定在 MainScheduler 监听(主线程监听)
  • Driver 会对新观察者回放(重新发送)上一个元素,而 Signal 不会对新观察者回放上一个元素

ControlEvent

  • 不会产生 error 事件
  • 一定在 MainScheduler 订阅(主线程订阅)
  • 一定在 MainScheduler 监听(主线程监听)

Subjects - 订阅 + 响应事件

PublishSubject

  • 不需要初始值创建
  • 只能收到订阅后的Event

BehaviorSubject

  • 需要一个默认值创建
  • 能收到订阅后上一个Event,之后新的Event正常

ReplaySubject

  • 在创建时候需要设置一个 bufferSize,表示它对于它发送过的 event 的缓存个数

BehaviorRelay替代Variable

  • 它的本质其实也是对 BehaviorSubject 的封装,所以它也必须要通过一个默认的初始值进行创建
  • BehaviorRelay 有一个 value 属性,我们通过这个属性可以获取最新值。而通过它的 accept() 方法可以对值进行修改

Operator - 创建变化组合事件

Disposable - 管理绑定(订阅)的生命周期

Schedulers - 线程队列搭配