本文没有记录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运行。