美文网首页
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