RxSwift笔记 - 特征序列

除了可观察序列ObservableRxSwift还为我们提供了一些特征序列(Traits):SingleCompletableMaybeDriverControlEvent

我们可以将这些 Traits 看作是 Observable 的另外一个版本。

1.Single

SingleObservable的另外一个版本。但它不像Observable 可以发出多个元素,它要么只能发出一个元素,要么产生一个error事件。

  • 发出一个元素,或一个 error事件
  • 不会共享状态变化

应用场景:
Single比较常见的例子就是执行HTTP请求,然后返回一个应答或错误。不过我们也可以用Single来描述任何只有一个元素的序列。

asSingle()
我们可以通过调用Observable 序列的.asSingle()方法,将它转换为 Single


2.Completable

CompletableObservable的另外一个版本。不像Observable可以发出多个元素,它要么只能产生一个completed事件,要么产生一个 error事件。

  • 不会发出任何元素
  • 只会发出一个 completed事件或者一个error事件
  • 不会共享状态变化

应用场景
CompletableObservable 有点类似。适用于那些只关心任务是否完成,而不需要在意任务返回值的情况。比如:在程序退出时将一些数据缓存到本地文件,供下次启动时加载。像这种情况我们只关心缓存是否成功。


3.Maybe

Maybe同样是Observable 的另外一个版本。它介于 SingleCompletable之间,它要么只能发出一个元素,要么产生一个 completed 事件,要么产生一个error事件。

  • 发出一个元素、或者一个 completed 事件、或者一个 error 事件
    不会共享状态变化

应用场景
Maybe 适合那种可能需要发出一个元素,又可能不需要发出的情况。

asMaybe()
我们可以通过调用 Observable序列的 .asMaybe()方法,将它转换为 Maybe


4.Driver

如果我们的序列满足如下特征,就可以使用它:

  • 不会产生 error事件
  • 一定在主线程监听(MainScheduler
  • 共享状态变化(shareReplayLatestWhileConnected

为什么要使用 Driver?
(1)Driver最常使用的场景应该就是需要用序列来驱动应用程序的情况了,比如:

  • 通过CoreData模型驱动UI

  • 使用一个UI 元素值(绑定)来驱动另一个UI元素值

(2)与普通的操作系统驱动程序一样,如果出现序列错误,应用程序将停止响应用户输入。
(3)在主线程上观察到这些元素也是极其重要的,因为UI元素和应用程序逻辑通常不是线程安全的。
(4)此外,使用构建Driver的可观察的序列,它是共享状态变化。


5.ControlProperty

(1)ControlProperty 是专门用来描述 UI 控件属性,拥有该类型的属性都是被观察者(Observable)。
(2)ControlProperty具有以下特征:

  • 不会产生 error 事件
  • 一定在 MainScheduler订阅(主线程订阅)
  • 一定在 MainScheduler监听(主线程监听)
  • 共享状态变化

6.ControlEvent

基本介绍
(1)ControlEvent是专门用于描述 UI 所产生的事件,拥有该类型的属性都是被观察者(Observable)
(2)ControlEventControlProperty 一样,都具有以下特征:

  • 不会产生error事件
  • 一定在 MainScheduler订阅(主线程订阅)
  • 一定在MainScheduler监听(主线程监听)
  • 共享状态变化

你可能感兴趣的:(RxSwift笔记 - 特征序列)