我该选用哪个操作符? - 实例操作符
使用此页面通过类型查找Observable
适合您需要的实例运算符:
使用现有的序列 | 我想改变每个值 | map/select | ||
我想从每个值拉一个属性 | pluck | |||
我想在不影响值的情况下被通知值 | do/tap doOnNext/tapOnNext doOnError/tapOnError doOnCompleted/tapOnCompleted |
|||
我想包含值 | 基于自定义逻辑 | filter/where | ||
从序列开头 | take | |||
基于自定义逻辑 | takeWhile | |||
从序列的末尾 | takeLast | |||
直到另一个序列发射一个值或完成 | takeUntil | |||
我想忽略值 | 全部 | ignoreElements | ||
从序列的开头 | skip | |||
基于自定义逻辑 | skipWhile | |||
从序列的末尾 | skipLast | |||
直到另一个序列发出一个值 | skipUntil | |||
与以前的值相同 | distinctUntilChanged | |||
这(触发)太频繁 | throttle | |||
我想计算 | 总和 | 这些值的 | sum | |
平均值 | average | |||
使用自定义逻辑 | 并且只输出最终值 | aggregate reduce |
||
并在计算出值时输出(每一步的)值 | scan | |||
我想用元数据包装它的消息 | 描述每个消息 | materialize | ||
包括从最后一个价值以来的时间 | timeInterval | |||
包括时间戳 | timestamp | |||
经过一段时间的不活动 | 我想抛出一个错误 | timeout | ||
我想切换到另一个序列 | timeout | |||
我想确保只有一个值 | 并且如果存在多于或少于一个值则抛出错误 | single | ||
并且如果没有值,则使用默认值 | singleOrDefault | |||
我只想取第一个值 | 并且如果没有值,则抛出错误 | first | ||
并且如果没有值,则使用默认值 | firstOrDefault | |||
在一段时间内 | sample | |||
我只想取最后的值 | 如果没有值,则报错 | last | ||
并且如果没有值,则使用默认值 | lastOrDefault | |||
我想知道它包含多少值 | count | |||
我想知道它是否包含一个指定的值 | contains | |||
我想知道条件是否满足 | 只需要任一值满足 | any/some | ||
需要所有值都满足 | all/every | |||
我想把消息延迟一段特定的时间 | delay | |||
基于自定义逻辑 | delayWithSelector | |||
我想给值分组 | 直到序列完成 |
toArray toMap toSet |
||
使用自定义逻辑 | 作为数组 | buffer | ||
作为序列 | window | |||
根据特定大小分批 | 作为数组 | bufferWithCount | ||
作为序列 | windowWithCount | |||
基于时间 | 作为数组 | bufferWithTime | ||
作为序列 | windowWithTime | |||
基于时间或计数,以先发生者为准 | 作为数组 | bufferWithTimeOrCount | ||
作为序列 | windowWithTimeOrCount | |||
基于一个指定的key | 直到序列完成 | groupBy | ||
并控制每组的生命周期 | groupByUntil | |||
我想为每个值开始一个新的序列 | 并且并行地从所有序列中发出值 | flatMap/selectMany | ||
并按顺序从每个序列中输出值 | concatMap/selectConcat | |||
并在新值到达时取消先前的序列 | flatMapLatest/selectSwitch | |||
并递归地为每个新值启动一个新的序列 | expand | |||
并根据onNext,onError和onCompleted并行地从所有序列发出值 | flatMapObserver/selectManyObserver | |||
并根据onNext,onError和onCompleted顺序地从所有序列发出值 | concatMapObserver/selectConcatObserver | |||
我想把它与另一个结合起来 | 两者都完成时发出通知 | forkJoin | ||
我想执行复杂的操作,而不会打破流畅的调用 | let | |||
我想在多个订阅者之间共享订阅 | 使用特定的`subject`实现 | multicast | ||
publish share |
||||
并向未来订阅者提供最后的值 |
publishLast shareLast |
|||
并向未来订阅者重播默认值或最新值 |
publishValue shareValue |
|||
并向未来的订阅者重播n个值 |
replay shareReplay |
|||
发生错误时 | 我想重新订阅 | retry | ||
我想开始一个新序列 | catch | |||
取决于错误 | catch | |||
当完成时 | 我想重新订阅 | repeat | ||
我想开始一个新序列 | concat | |||
当完成或抛出错误时 | 我想开始一个新序列 | onErrorResumeNext | ||
当完成,抛出错误或退订时 | 我想执行一个函数 | finally | ||
我想改变路由的调度程序 | 调用`subscribe`(订阅) | subscribeOn | ||
消息 | observeOn | |||
使用两个序列 | 我想决定从哪个接收值 | 取决于哪个序列先发出值 | amb | |
我想确定它们的值是否相等 | sequenceEqual | |||
我想合并它们的值 | 只有当第一个序列发射时,使用每个序列的最新值 | withLatestFrom | ||
为了 | 不改变时重复使用最新值 | combineLatest | ||
每个值只使用一次 | zip | |||
重复分享我选择的“生命周期” | 并通知每个组合 | join | ||
并给每个“左”的序列的值给“右”的序列 | groupJoin | |||
我想包含两者的值 | merge |
相关阅读
参考
概念