在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ FlatMap
調(diào)度器 Scheduler
Empty/Never/Throw
Replay
這個頁面展示了創(chuàng)建Observable的各種方法。
ObserveOn
ReactiveX
TimeInterval
Window
本頁展示的操作符用于對整個序列執(zhí)行算法操作或其它操作,由于這些操作必須等待數(shù)據(jù)發(fā)射完成(通常也必須緩存這些數(shù)據(jù)),它們對于非常長
IgnoreElements
Distinct
Last
Start
And/Then/When
Switch
創(chuàng)建操作
Materialize/Dematerialize
CombineLatest
Catch
實現(xiàn)自己的操作符
StringObservable
Map
ConnectableObservable
Using
Take
BlockingObservable
TakeLast
Defer
RxJavaSchedulersHook
First
FlatMap
這個頁面的操作符可用于根據(jù)條件發(fā)射或變換Observables,或者對它們做布爾運算:
Do
Repeat
Serialize
這個頁面展示的操作符可用于過濾和選擇Observable發(fā)射的數(shù)據(jù)序列。
這個頁面列出了很多用于Observable的輔助操作符
Single
Retry
從錯誤中恢復(fù)的技術(shù)
Sample
Merge
算術(shù)和聚合操作
Range
Timestamp
RxJava Issues
From
Subscribe
Subject
Delay
Skip
SubscribeOn
Filter
按字母順序排列的全部操作符列表
Timeout
Scan
onError
Zip
RxJava文檔和教程
Publish
ElementAt
第一個例子
SkipLast
Just
Timer
Debounce
GroupBy
條件和布爾操作
這個頁面展示了可用于對Observable發(fā)射的數(shù)據(jù)執(zhí)行變換操作的各種操作符。
Introduction
rxjava-async
介紹響應(yīng)式編程
這個頁面展示的操作符可用于組合多個Observables。
ReactiveX
Connect
操作符分類
StartWith
Interval
Join
To
Buffer
RefCount
介紹
Observable

FlatMap

FlatMap

FlatMap將一個發(fā)射數(shù)據(jù)的Observable變換為多個Observables,然后將它們發(fā)射的數(shù)據(jù)合并后放進一個單獨的Observable

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/flatMap.png" alt="flatMap" />

FlatMap操作符使用一個指定的函數(shù)對原始Observable發(fā)射的每一項數(shù)據(jù)執(zhí)行變換操作,這個函數(shù)返回一個本身也發(fā)射數(shù)據(jù)的Observable,然后FlatMap合并這些Observables發(fā)射的數(shù)據(jù),最后將合并后的結(jié)果當做它自己的數(shù)據(jù)序列發(fā)射。

這個方法是很有用的,例如,當你有一個這樣的Observable:它發(fā)射一個數(shù)據(jù)序列,這些數(shù)據(jù)本身包含Observable成員或者可以變換為Observable,因此你可以創(chuàng)建一個新的Observable發(fā)射這些次級Observable發(fā)射的數(shù)據(jù)的完整集合。

注意:FlatMap對這些Observables發(fā)射的數(shù)據(jù)做的是合并(merge)操作,因此它們可能是交錯的。

在許多語言特定的實現(xiàn)中,還有一個操作符不會讓變換后的Observables發(fā)射的數(shù)據(jù)交錯,它按照嚴格的順序發(fā)射這些數(shù)據(jù),這個操作符通常被叫作ConcatMap或者類似的名字。

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/mergeMap.png" alt="mergeMap" />

RxJava將這個操作符實現(xiàn)為flatMap函數(shù)。

注意:如果任何一個通過這個flatMap操作產(chǎn)生的單獨的Observable調(diào)用onError異常終止了,這個Observable自身會立即調(diào)用onError并終止。

這個操作符有一個接受額外的int參數(shù)的一個變體。這個參數(shù)設(shè)置flatMap從原來的Observable映射Observables的最大同時訂閱數(shù)。當達到這個限制時,它會等待其中一個終止然后再訂閱另一個。

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/mergeMap.nce.png" alt="mergeMap.nce" />

還有一個版本的flatMap為原始Observable的每一項數(shù)據(jù)和每一個通知創(chuàng)建一個新的Observable(并對數(shù)據(jù)平坦化)。

它也有一個接受額外int參數(shù)的變體。

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/mergeMap.r.png" alt="mergeMap.r" />

還有一個版本的flatMap會使用原始Observable的數(shù)據(jù)觸發(fā)的Observable組合這些數(shù)據(jù),然后發(fā)射這些數(shù)據(jù)組合。它也有一個接受額外int參數(shù)的版本。

flatMapIterable

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/mergeMapIterable.png" alt="mergeMapIterable" />

flatMapIterable這個變體成對的打包數(shù)據(jù),然后生成Iterable而不是原始數(shù)據(jù)和生成的Observables,但是處理方式是相同的。

concatMap

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/concatMap.png" alt="concatMap" />

還有一個concatMap操作符,它類似于最簡單版本的flatMap,但是它按次序連接而不是合并那些生成的Observables,然后產(chǎn)生自己的數(shù)據(jù)序列。

switchMap

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/switchMap.png" alt="switchMap" />

RxJava還實現(xiàn)了switchMap操作符。它和flatMap很像,除了一點:當原始Observable發(fā)射一個新的數(shù)據(jù)(Observable)時,它將取消訂閱并停止監(jiān)視產(chǎn)生執(zhí)之前那個數(shù)據(jù)的Observable,只監(jiān)視當前這一個。

split

http://wiki.jikexueyuan.com/project/rx-docs/images/operators/St.split.png" alt="St.split" />

在特殊的StringObservable類(默認沒有包含在RxJava中)中還有一個split操作符。它將一個發(fā)射字符串的Observable轉(zhuǎn)換為另一個發(fā)射字符串的Observable,只不過,后者將原始的數(shù)據(jù)序列當做一個數(shù)據(jù)流,使用一個正則表達式邊界分割它們,然后合并發(fā)射分割的結(jié)果。