RxSwift操作符对比

本文没有记录RxSwift操作符的基本介绍和用法,具体介绍在网上有很多,当然最好就是查看官方Demo了,还有一个不错的中文文档(非官方)。本文主要是记录操作符的对比,本人的能力有限,如有错漏,劳烦大家指出,希望能在操作符的对比中,深入熟悉RxSwift。

map & flatMap 异同

相同:

  • 都是对Observable 的每个元素应用一个转换方法,然后返回一个Observable

不同:

  • map中的返回值直接是Observable的元素,并不会合并
  • flatMap有将多个Observable合并在一起的能力

flatMap = map + merge

flatMap & flatMapLatest 异同

相同:

  • 都是对Observable 的每个元素应用一个转换方法转换成其他Observable

不同:

  • flatMap 会将这些 Observables 合并在一起
  • flatMapLatest只会取最新的Observable

concat与starWith异同

相同:

  • 都是在Observable上插入其他元素或者序列,都用于插入事件

不同:

  • concat 是在当前序列完成后添加新的Observable
  • startWith是在当前序列的头部添加元素

concat与merge异同

相同:

  • 都是将 Observables 整合在一起

不同:

  • concat 是将多个 Observables 按顺序串联起来
  • merge 是将多个 Observables 按照事件的发生顺序合并在一起

reduce、scan异同

相同:

  • 都是持续将Observable 的每一个元素应用一个函数(上一个结果和当前元素的运算,以此类推从初始值到最后)

不同:

  • reduce是直到遍历完全部的元素后发出最终结果
  • scan发出每一次函数返回的结果。

observeOn & subscribeOn

  • subscribeOn 操作符指定 Observable 在哪个 Scheduler 开始执行,无论它处于链的那个位置。
  • observeOn 将决定后面的方法在哪个 Scheduler 运行。

你可能感兴趣的:(RxSwift操作符对比)