过滤 操作符|时间控制 操作符|(计算 & 减少 & 数学 操作符)
过滤 操作符
compactMap & tryCompactMap - 类似map,但会过滤掉nil(不符合规则)的元素
removeDuplicates & tryRemoveDuplicates - 过滤连续的同样的数据,比如6,6,7,6,发送的是6,7,6
replaceError - 使用默认的一个错误,替换上游发出的错误。
replaceEmpty - 替换不发送数据的Empty的Publisher
replaceNil - 替换nil的数据
filter & tryFilter - 过滤不符合规则的元素
时间控制 操作符
delay - 接受到值后延迟多久再发送
debounce - 接受到值后启动定时器,定时器结束之前,来新的值了,重置计时器时间,直到计时器结束后发送 - 比如实时搜索框
throttle - 在指定的时间内,连续的收到数据(如果有短暂不收到数据,会发送这次数据,并重新开始),会发送第一个或者最后一个数据,发送- 比如实时搜索框
measureInterval - 用于调试的操作符,计算两次值发出的时间间隔,单位是纳秒(1000000000)
timeout - 在指定时间内收到值,如果没收到,超时,发送completion结束,如果收到了,重新开始timeout
collect(.byTime(DispatchQueue.main,.seconds(collectTimeStride)) - 每隔一段事件收集数据,变成数组发送
计算 | 减少 | 数学 操作符
collect - 按照指定元素个数拆分为合适的集合
reduce & tryReduce - 执行闭包,记录上次的闭包结果
ignoreOutput - 忽略receive收到的值,只关心完成结果
max & tryMax & min & tryMin - 记录序列里最大(小)的值,并发送结果,要求原始序列是已完成的序列
count - 记录原始序列里发出的值的个数,并发送结果,要求原始序列是已完成的序列