美文网首页
Combine进化之路7——操作符

Combine进化之路7——操作符

作者: valiant_xin | 来源:发表于2023-09-12 09:38 被阅读0次

    操作符

    操作符是Combine中重要的部分,通过各种操作符,可以将原本各不相关的逻辑编程一致的、声明的数据流。
    具体应用到编程中就是,利用操作符编程新的发布者、订阅者等数据。

    转换操作符:

    • map/mapError
      map:将接收到的值按照给定的闭包转换为其他值。
      mapError:将错误转换为另外一种错误类型。
    • flatMap
    • replaceNil
      将接收到的nil转换为给定的值
    • scan
      将收到的值与当前值(第一次使用 initialResult )按照给定的closure转换。
    • setFailureType
      强制将上游 Publisher 的错误类型设置为指定类型。这个方法并不是进行错误类型的转换,因为它并没有让我们提供一个 closure,实际上只是为了让不同的 Publisher 的错误类型进行统一,因而这个 Publisher 实际上是不应该发生错误的。

    过滤操作符:

    • filter
      只会让满足条件的值通过。
    • compactMap
      和 map 的功能类似,只是会自动过滤掉空的元素。
    • removeDuplicates
      会跳过在之前已经出现过的值。
    • replaceEmpty/replaceError
      如果上游 Publisher 是个空的数据流,replaceEmpty 会发送指定的值,然后正常结束。
      如果上游 Publisher 因错误而终止,replaceError 会发送指定的值,然后正常结束。

    reduce操作符:

    • collect
    • ignoreOutput
    • reduce

    运算操作符:

    • count
    • min/max

    匹配操作符:

    • contains
      会返回一个布尔值来表示收到的值是否包含满足给定的条件的值。需要说明的是,一旦收到的值满足条件, contains 会立即发送 true 并且正常结束,而如果收到的值不满足条件,会一直等到收到上游的 Publisher 发出正常结束的消息之后才发送 false 并且正常结束。
    • allSatisfy
      会返回一个布尔值来表示所有收到的值是否满足给定的条件。需要说明的是,一旦收到的值不满足条件, allSatisfy 会立即发送 false 并且正常结束,而如果收到的值满足条件,会一直等到收到上游的 Publisher 发出正常结束的消息之后才发送 true 并且正常结束。

    序列操作符:

    • drop/dropFirst
      drop:会一致丢弃收到的值,直到给定的条件得到满足,然后后面的值会正常发送。
    • append/prepend
    • prefix/first/last/output

    组合操作符:

    • combineLatest
    • merge
    • zip

    错误处理操作符:

    • assertNoFailure
    • catch
    • retry

    时间控制操作符:

    • measureTimeInterval
    • debounce
      当有输入时,debounce就会开启一个指定时间的时间窗口,如果在指定时间内收到了新的数据,则再开启一个新的指定时间的时间窗口,之前的窗口作废,直到指定时间内没有新的数据,然后发送最后收到的数据,它的核心思想是可以控制频繁的数据发送问题
    • delay
    • throttle
      throttle会开启一系列连续的指定时间的时间窗口,每次达到指定时间的临界点就发送最近的一个数据,注意,当收到第一个数据时,会立刻发送。
    • timeout

    其他操作符

    • encode/decode
    • switchToLatest
    • share
    • breakpoint/breakpointOnError
    • handleEvents

    Combine进化之路合集

    相关文章

      网友评论

          本文标题:Combine进化之路7——操作符

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