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 运行。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容