ReactiveX的每个语言特定的实现都提供了一些操作符。 其中一些是共同提供的,但也有一些操作符仅在某些语言实现中提供。此外,每个语言实现都倾向于将其操作符命名为类似于该语言中其他上下文已熟悉的命名约定。
大多数操作符都在事件源上操作并返回一个事件源。这使我们可以在链中一个接一个地应用这些操作符。链中的每个操作符都会处理由前一个操作符的操作产生的事件源。
区别其他模式,如Builder模式,该模式使用特定类的各种方法通过方法的操作修改该对象,对同一类的项进行操作。这些模式允许以类似的方式链接方法。但是在Builder模式中,方法在链中出现的顺序通常并不重要,事件源的操作符顺序很重要。
一条链上的操作符不是单独的在原始的事件源上操作的,是依次在调用链被调用,每个操作符操作的事件源都由前一个操作符生成。
此页面首先列出了ReactiveX中被视为“核心”操作符的内容,以及指向更深入信息页面的链接,这些页面有关于这些操作符如何工作以及特定语言特定ReactiveX版本如何实现这些操作符。
接下来是一个“决策树”,可以帮助找到最适合的用例的操作符。
最后,有一个按字母排列的大多数语言特定的实现中常见的ReactiveX操作符列表。这些链接指向对应核心操作符的页面,该核心操作符指最类似于特定于语言的操作符(例如,Rx.NET“SelectMany”操作符链接到FlatMapReactiveX操作符的文档,其中“SelectMany”是Rx.NET实现)。
如果要实现自己的操作符,请参阅实现操作符.
创建新事件源的操作符。
Create
— 通过调用观察者的方法从无到有创建一个事件源Defer
— 在观察者订阅之前不会创建事件源,并为每个观察者创建一个新的事件源Empty
/Never
/Throw
— 创建具有非常明确和有限行为的事件源From
— 将一些其他对象或数据结构转换为事件源Interval
— 创建一个事件源,它以给定的时间间隔发出一系列整数Just
— 将对象或一组对象转换为发出该对象或那些对象的事件源Range
— 创建一个事件源,它发出一系列连续的整数Repeat
— 创建一个事件源,重复发出特定事件或事件序列Start
— 创建一个发出函数返回值的事件源Timer
— 创建一个事件源,在给定的延迟后发出单个事件转换事件源发出的事件的操作符。
Buffer
— 周期性的将事件源发出的事件收集成捆并发出这些捆绑事件,而不是一次发送一个事件FlatMap
— 将事件源发出的事件转换为多个事件源,然后将这事件的依次发出GroupBy
— 将一个事件源根据不同的事件按key划分为一组事件源Map
— 每个事件源发出的事件通过将函数处理后在发出Scan
— 依次的用聚合函数处理事件源发出的事件, 并发出每个连续的值Window
— 将事件源中的事件周期性划分为事件源窗口并发出这些窗口,而不是一次发出一个事件从源事件源有选择地发出事件的操作符。
Debounce
— 如果特定的时间跨度已经过去而没有发出另一个事件则从事件源发出一个事件Distinct
— 对事件源发出的事件去重ElementAt
— 仅从事件源发出位置n的事件Filter
— 仅发出通过断言正确的事件源中的那些事件First
— 从事件源中仅发出第一个事件或满足条件的第一个事件IgnoreElements
— 不从事件源中发出任何事件,但要反馈其终止通知Last
— 仅发出事件源发出的最后一哥事件Sample
— 在固定的时间间隔采样事件源最靠近的事件发出Skip
— 跳过事件源发出的前n个事件SkipLast
— 跳过事件源发出的最后n个事件Take
— 仅从事件源发出的前n个事件TakeLast
— 仅从事件源发出的最后n个事件通过合并多个源事件源创建一个事件源的操作符。
And
/Then
/When
— 使用Pattern
和Plan
中介组合两个或多个事件源发出的事件CombineLatest
— 当两个事件源中的任何一个发出一个事件时,通过指定的函数组合每个事件源发出的最新事件并发出Join
— 在另一个事件源发出的事件定义的时间窗口期间发出一个事件源中的事件,组合两个事件源发出的事件Merge
— 合并发送的事件来合并多个事件源为一个StartWith
— 在开始从源事件源发出事件之前,先发出指定的事件序列Switch
— 将发出多个事件源转换为单个事件源,该事件源发出多个事件源中最近发出的事件Zip
— 通过指定的函数将多个事件源的发出的事件排放组合在一起并发出有助于捕获事件源的错误通知的操作符。
用于处理事件源的有用操作符的集合。
Delay
— 事件源延迟指定时间发出事件Do
— 注册要对事件源生命周期中发生的各种事件执行的操作Materialize
/Dematerialize
— 发出表达事件源发出的事件(通知)类型,和逆操作ObserveOn
— 指定观察者将观察此事件源的调度程序Serialize
— 强制事件源进行序列化调用并保持良好行为和同步Subscribe
— 根据事件源的发出的事件或通知进行操作SubscribeOn
— 指定事件源在订阅时应使用的调度器TimeInterval
— 将发出事件的事件源转换为发出这些事件之间的时间间隔Timeout
— 镜像源事件源,但如果在指定时间段内没有任何发出的事件,则发出错误通知Timestamp
— 为事件源发出的每个事件附加时间戳Using
— 创建与事件源具有相同生命周期的可支配资源评估事件源发出的一个或多个事件源或事件的操作符。
All
— 确定事件源发出的所有事件是否符合某些条件Amb
— 给定两个或多个源事件源,仅从第一个发出事件或通知的事件源中发出所有事件Contains
— 确定事件源是否发出指定项目DefaultIfEmpty
— 如果源事件源不发出任何内容,则发出默认事件SequenceEqual
— 确定两个事件源是否发出相同的事件序列SkipUntil
— 丢弃事件源发出的事件,直到第二个事件源发出事件为止SkipWhile
— 丢弃事件源发出的事件,直到指定的条件变为falseTakeUntil
— 在第二个事件源发出事件或终止后,丢弃事件源发出的事件TakeWhile
— 在指定条件变为false后丢弃事件源发出的事件对事件源发出的整个事件序列进行算术运算的操作符
Average
— 计算事件源发出的数字的平均值并发出此数值Concat
— 无交叉的拼接两个或多个事件源发出的事件Count
— 计算源事件源发出的事件数并发出此数值Max
— 计算事件源发出的数字的最大值并发出此数值Min
— 计算事件源发出的数字的最小值并发出此数值Reduce
— 相继的用函数处理事件源发出的事件, 并发出最终的值Sum
— 计算事件源发出的数字的和并发出此数值精确控制的订阅动态的特殊事件源。
Connect
— 指示可连接的事件源开始向其观察者发出事件Publish
— 将普通的事件源转换为可连接的事件源RefCount
— 使可连接事件源的行为类似于普通的事件源Replay
— 确保所有观察者都看到相同的事件序列,即使他们在事件源开始发出事件后订阅To
— 将事件源转换为另一种对象或数据结构此树可以帮助找到所需的ReactiveX事件源操作符。
Pattern
和Plan
中介组合通知
对象中公认的核心操作符名称以黑体字显示。 其他条目表示ReactiveX核心操作符集之外的特殊操作符或特定于语言的操作符的变体。
Aggregate
All
Amb
ambArray
ambWith
and_
And
Any
apply
as_blocking
asObservable
AssertEqual
asyncAction
asyncFunc
Average
averageDouble
averageFloat
averageInteger
averageLong
blocking
blockingFirst
blockingForEach
blockingIterable
blockingLast
blockingLatest
blockingMostRecent
blockingNext
blockingSingle
blockingSubscribe
Buffer
bufferWithCount
bufferWithTime
bufferWithTimeOrCount
byLine
cache
cacheWithInitialCapacity
case
Cast
Catch
catchError
catchException
collect
collect
(RxScala version of Filter
)collectInto
CombineLatest
combineLatestDelayError
combineLatestWith
Concat
concat_all
concatAll
concatArray
concatArrayDelayError
concatArrayEager
concatDelayError
concatEager
concatMap
concatMapDelayError
concatMapEager
concatMapEagerDelayError
concatMapIterable
concatMapObserver
concatMapTo
concatWith
Connect
connect_forever
cons
Contains
controlled
Count
countLong
Create
cycle
Debounce
decode
DefaultIfEmpty
Defer
deferFuture
Delay
delaySubscription
delayWithSelector
Dematerialize
Distinct
distinctKey
distinctUntilChanged
distinctUntilKeyChanged
Do
doAction
doAfterTerminate
doOnComplete
doOnCompleted
doOnDispose
doOnEach
doOnError
doOnLifecycle
doOnNext
doOnRequest
doOnSubscribe
doOnTerminate
doOnUnsubscribe
doseq
doWhile
drop
dropRight
dropUntil
dropWhile
ElementAt
ElementAtOrDefault
Empty
emptyObservable
empty?
encode
ensures
error
every
exclusive
exists
expand
failWith
Filter
filterNot
Finally
finallyAction
finallyDo
find
findIndex
First
firstElement
FirstOrDefault
firstOrElse
FlatMap
flatMapFirst
flatMapIterable
flatMapIterableWith
flatMapLatest
flatMapObserver
flatMapWith
flatMapWithMaxConcurrent
flat_map_with_index
flatten
flattenDelayError
foldl
foldLeft
for
forall
ForEach
forEachFuture
forEachWhile
forIn
forkJoin
From
fromAction
fromArray
FromAsyncPattern
fromCallable
fromCallback
FromEvent
FromEventPattern
fromFunc0
fromFuture
fromIterable
fromIterator
from_list
fromNodeCallback
fromPromise
fromPublisher
fromRunnable
Generate
generateWithAbsoluteTime
generateWithRelativeTime
generator
GetEnumerator
getIterator
GroupBy
GroupByUntil
GroupJoin
head
headOption
headOrElse
if
ifThen
IgnoreElements
indexOf
interleave
interpose
Interval
intervalRange
into
isEmpty
items
Join
join
(string)jortSort
jortSortUntil
Just
keep
keep-indexed
Last
lastElement
lastOption
LastOrDefault
lastOrElse
Latest
latest
(Rx.rb version of Switch
)length
let
letBind
lift
limit
LongCount
ManySelect
Map
map
(RxClojure version of Zip
)MapCat
mapCat
(RxClojure version of Zip
)map-indexed
mapTo
mapWithIndex
Materialize
Max
MaxBy
Merge
mergeAll
mergeArray
mergeArrayDelayError
merge_concurrent
mergeDelayError
mergeObservable
mergeWith
Min
MinBy
MostRecent
Multicast
multicastWithSelector
nest
Never
Next
Next
(BlockingObservable version)none
nonEmpty
nth
ObserveOn
ObserveOnDispatcher
observeSingleOn
of
of_array
ofArrayChanges
of_enumerable
of_enumerator
ofObjectChanges
OfType
ofWithScheduler
onBackpressureBlock
onBackpressureBuffer
onBackpressureDrop
OnErrorResumeNext
onErrorReturn
onErrorReturnItem
onExceptionResumeNext
onTerminateDetach
orElse
pairs
pairwise
partition
partition-all
pausable
pausableBuffered
pluck
product
Publish
PublishLast
publish_synchronized
publishValue
raise_error
Range
Reduce
reduceWith
reductions
RefCount
Repeat
repeat_infinitely
repeatUntil
repeatWhen
Replay
rescue_error
rest
Retry
retry_infinitely
retryUntil
retryWhen
Return
returnElement
returnValue
runAsync
safeSubscribe
Sample
Scan
scanWith
scope
Select
(alternate name of Map
)select
(alternate name of Filter
)selectConcat
selectConcatObserver
SelectMany
selectManyObserver
select_switch
selectSwitch
selectSwitchFirst
selectWithMaxConcurrent
select_with_index
seq
SequenceEqual
sequence_eql?
SequenceEqualWith
Serialize
share
shareReplay
shareValue
Single
singleElement
SingleOrDefault
singleOption
singleOrElse
size
Skip
SkipLast
skipLastWithTime
SkipUntil
skipUntilWithTime
SkipWhile
skipWhileWithIndex
skip_with_time
slice
sliding
slidingBuffer
some
sort
sorted
sort-by
sorted-list-by
split
split-with
Start
startAsync
startFuture
StartWith
startWithArray
stringConcat
stopAndWait
subscribe
subscribeActual
SubscribeOn
SubscribeOnDispatcher
subscribeOnCompleted
subscribeOnError
subscribeOnNext
subscribeWith
Sum
sumDouble
sumFloat
sumInteger
sumLong
Switch
switchCase
switchIfEmpty
switchLatest
switchMap
switchMapDelayError
switchOnNext
switchOnNextDelayError
Synchronize
Take
take_with_time
takeFirst
TakeLast
takeLastBuffer
takeLastBufferWithTime
takeLastWithTime
takeRight
(参考: TakeLast
)TakeUntil
takeUntilWithTime
TakeWhile
takeWhileWithIndex
tail
tap
tapOnCompleted
tapOnError
tapOnNext
Then
thenDo
Throttle
throttleFirst
throttleLast
throttleWithSelector
throttleWithTimeout
Throw
throwError
throwException
TimeInterval
Timeout
timeoutWithSelector
Timer
Timestamp
To
to_a
ToArray
ToAsync
toBlocking
toBuffer
to_dict
ToDictionary
ToEnumerable
ToEvent
ToEventPattern
ToFlowable
ToFuture
to_h
toIndexedSeq
toIterable
toIterator
ToList
ToLookup
toMap
toMultiMap
ToObservable
toSet
toSortedList
toStream
ToTask
toTraversable
toVector
tumbling
tumblingBuffer
unsafeCreate
unsubscribeOn
Using
When
Where
while
whileDo
Window
windowWithCount
windowWithTime
windowWithTimeOrCount
windowed
withFilter
withLatestFrom
Zip
zipArray
zipIterable
zipWith
zipWithIndex
++
+:
:+