美文网首页
RxSwift操作符对比

RxSwift操作符对比

作者: Seacen_Liu | 来源:发表于2018-07-23 10:35 被阅读0次

    本文没有记录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操作符对比

          本文链接:https://www.haomeiwen.com/subject/scmdmftx.html