-
這個(gè)頁面展示了創(chuàng)建Observable的各種方法猾封。
**just(?)
** — 將一個(gè)或多個(gè)對(duì)象轉(zhuǎn)換成發(fā)射這個(gè)或這些對(duì)象的一個(gè)Observable
**from(?)
** — 將一個(gè)Iterable, 一個(gè)Future, 或者一個(gè)數(shù)組轉(zhuǎn)換成一個(gè)Observable
**repeat(?)
** — 創(chuàng)建一個(gè)重復(fù)發(fā)射指定數(shù)據(jù)或數(shù)據(jù)序列的Observable
**repeatWhen(?)
** — 創(chuàng)建一個(gè)重復(fù)發(fā)射指定數(shù)據(jù)或數(shù)據(jù)序列的Observable招狸,它依賴于另一個(gè)Observable發(fā)射的數(shù)據(jù)
**create(?)
** — 使用一個(gè)函數(shù)從頭創(chuàng)建一個(gè)Observable
**defer(?)
** — 只有當(dāng)訂閱者訂閱才創(chuàng)建Observable;為每個(gè)訂閱創(chuàng)建一個(gè)新的Observable
**range(?)
** — 創(chuàng)建一個(gè)發(fā)射指定范圍的整數(shù)序列的Observable
**interval(?)
** — 創(chuàng)建一個(gè)按照給定的時(shí)間間隔發(fā)射整數(shù)序列的Observable
**timer(?)
** — 創(chuàng)建一個(gè)在給定的延時(shí)之后發(fā)射單個(gè)數(shù)據(jù)的Observable
**empty(?)
** — 創(chuàng)建一個(gè)什么都不做直接通知完成的Observable
**error(?)
** — 創(chuàng)建一個(gè)什么都不做直接通知錯(cuò)誤的Observable
**never(?)
** — 創(chuàng)建一個(gè)不發(fā)射任何數(shù)據(jù)的Observable
-
這個(gè)頁面展示了可用于對(duì)Observable發(fā)射的數(shù)據(jù)執(zhí)行變換操作的各種操作符覆糟。
**map(?)
** — 對(duì)序列的每一項(xiàng)都應(yīng)用一個(gè)函數(shù)來變換Observable發(fā)射的數(shù)據(jù)序列
flatMap(?), concatMap(?), and flatMapIterable(?) — 將Observable發(fā)射的數(shù)據(jù)集合變換為Observables集合,然后將這些Observable發(fā)射的數(shù)據(jù)平坦化的放進(jìn)一個(gè)單獨(dú)的Observable
**switchMap(?)
** — 將Observable發(fā)射的數(shù)據(jù)集合變換為Observables集合勾徽,然后只發(fā)射這些Observables最近發(fā)射的數(shù)據(jù)
**scan(?)
** — 對(duì)Observable發(fā)射的每一項(xiàng)數(shù)據(jù)應(yīng)用一個(gè)函數(shù)绒障,然后按順序依次發(fā)射每一個(gè)值
**groupBy(?)
** — 將Observable分拆為Observable集合,將原始Observable發(fā)射的數(shù)據(jù)按Key分組酝碳,每一個(gè)Observable發(fā)射一組不同的數(shù)據(jù)
**buffer(?)
** — 它定期從Observable收集數(shù)據(jù)到一個(gè)集合矾踱,然后把這些數(shù)據(jù)集合打包發(fā)射,而不是一次發(fā)射一個(gè)
**window(?)
** — 定期將來自O(shè)bservable的數(shù)據(jù)分拆成一些Observable窗口疏哗,然后發(fā)射這些窗口呛讲,而不是每次發(fā)射一項(xiàng)
**cast(?)
** — 在發(fā)射之前強(qiáng)制將Observable發(fā)射的所有數(shù)據(jù)轉(zhuǎn)換為指定類型
-
這個(gè)頁面展示的操作符可用于過濾和選擇Observable發(fā)射的數(shù)據(jù)序列。
**filter(?)
** — 過濾數(shù)據(jù)
**takeLast(?)
** — 只發(fā)射最后的N項(xiàng)數(shù)據(jù)
**last(?)
** — 只發(fā)射最后的一項(xiàng)數(shù)據(jù)
**lastOrDefault(?)
** — 只發(fā)射最后的一項(xiàng)數(shù)據(jù)返奉,如果Observable為空就發(fā)射默認(rèn)值
**takeLastBuffer(?)
** — 將最后的N項(xiàng)數(shù)據(jù)當(dāng)做單個(gè)數(shù)據(jù)發(fā)射
**skip(?)
** — 跳過開始的N項(xiàng)數(shù)據(jù)
**skipLast(?)
** — 跳過最后的N項(xiàng)數(shù)據(jù)
**take(?)
** — 只發(fā)射開始的N項(xiàng)數(shù)據(jù)
**first(?)
and takeFirst(?)
** — 只發(fā)射第一項(xiàng)數(shù)據(jù)贝搁,或者滿足某種條件的第一項(xiàng)數(shù)據(jù)
**firstOrDefault(?)
** — 只發(fā)射第一項(xiàng)數(shù)據(jù),如果Observable為空就發(fā)射默認(rèn)值
**elementAt(?)
** — 發(fā)射第N項(xiàng)數(shù)據(jù)
**elementAtOrDefault(?)
** — 發(fā)射第N項(xiàng)數(shù)據(jù)衡瓶,如果Observable數(shù)據(jù)少于N項(xiàng)就發(fā)射默認(rèn)值
**sample(?)
or throttleLast(?)
** — 定期發(fā)射Observable最近的數(shù)據(jù)
**throttleFirst(?)
** — 定期發(fā)射Observable發(fā)射的第一項(xiàng)數(shù)據(jù)
**throttleWithTimeout(?)
or debounce(?)
** — 只有當(dāng)Observable在指定的時(shí)間后還沒有發(fā)射數(shù)據(jù)時(shí)徘公,才發(fā)射一個(gè)數(shù)據(jù)
**timeout(?)
** — 如果在一個(gè)指定的時(shí)間段后還沒發(fā)射數(shù)據(jù)牲证,就發(fā)射一個(gè)異常
**distinct(?)
** — 過濾掉重復(fù)數(shù)據(jù)
**distinctUntilChanged(?)
** — 過濾掉連續(xù)重復(fù)的數(shù)據(jù)
**ofType(?)
** — 只發(fā)射指定類型的數(shù)據(jù)
**ignoreElements(?)
** — 丟棄所有的正常數(shù)據(jù)哮针,只發(fā)射錯(cuò)誤或完成通知
-
這個(gè)頁面展示的操作符可用于組合多個(gè)Observables。
**startWith(?)
** — 在數(shù)據(jù)序列的開頭增加一項(xiàng)數(shù)據(jù)
**merge(?)
** — 將多個(gè)Observable合并為一個(gè)
**mergeDelayError(?)
** — 合并多個(gè)Observables坦袍,讓沒有錯(cuò)誤的Observable都完成后再發(fā)射錯(cuò)誤通知
**zip(?)
** — 使用一個(gè)函數(shù)組合多個(gè)Observable發(fā)射的數(shù)據(jù)集合十厢,然后再發(fā)射這個(gè)結(jié)果
**and(?)
, then(?)
, and when(?)
** — (rxjava-joins
) 通過模式和計(jì)劃組合多個(gè)Observables發(fā)射的數(shù)據(jù)集合
**combineLatest(?)
** — 當(dāng)兩個(gè)Observables中的任何一個(gè)發(fā)射了一個(gè)數(shù)據(jù)時(shí),通過一個(gè)指定的函數(shù)組合每個(gè)Observable發(fā)射的最新數(shù)據(jù)(一共兩個(gè)數(shù)據(jù))捂齐,然后發(fā)射這個(gè)函數(shù)的結(jié)果
**join(?)
and groupJoin(?)
** — 無論何時(shí)蛮放,如果一個(gè)Observable發(fā)射了一個(gè)數(shù)據(jù)項(xiàng),只要在另一個(gè)Observable發(fā)射的數(shù)據(jù)項(xiàng)定義的時(shí)間窗口內(nèi)奠宜,就將兩個(gè)Observable發(fā)射的數(shù)據(jù)合并發(fā)射
**switchOnNext(?)
** — 將一個(gè)發(fā)射Observables的Observable轉(zhuǎn)換成另一個(gè)Observable包颁,后者發(fā)射這些Observables最近發(fā)射的數(shù)據(jù)
(rxjava-joins) — 表示這個(gè)操作符當(dāng)前是可選的rxjava-joins包的一部分,還沒有包含在標(biāo)準(zhǔn)的RxJava操作符集合里
很多操作符可用于對(duì)Observable發(fā)射的onError
通知做出響應(yīng)或者從錯(cuò)誤中恢復(fù)压真,例如娩嚼,你可以:
吞掉這個(gè)錯(cuò)誤,切換到一個(gè)備用的Observable繼續(xù)發(fā)射數(shù)據(jù)
吞掉這個(gè)錯(cuò)誤然后發(fā)射默認(rèn)值
吞掉這個(gè)錯(cuò)誤并立即嘗試重啟這個(gè)Observable
吞掉這個(gè)錯(cuò)誤滴肿,在一些回退間隔后重啟這個(gè)Observable
這是操作符列表:
**onErrorResumeNext(?)
** — 指示Observable在遇到錯(cuò)誤時(shí)發(fā)射一個(gè)數(shù)據(jù)序列
**onErrorReturn(?)
** — 指示Observable在遇到錯(cuò)誤時(shí)發(fā)射一個(gè)特定的數(shù)據(jù)
**onExceptionResumeNext(?)
** — instructs an Observable to continue emitting items after it encounters an exception (but not another variety of throwable)指示Observable遇到錯(cuò)誤時(shí)繼續(xù)發(fā)射數(shù)據(jù)
**retry(?)
** — 指示Observable遇到錯(cuò)誤時(shí)重試
**retryWhen(?)
** — 指示Observable遇到錯(cuò)誤時(shí)岳悟,將錯(cuò)誤傳遞給另一個(gè)Observable來決定是否要重新給訂閱這個(gè)Observable
-
這個(gè)頁面列出了很多用于Observable的輔助操作符
**materialize(?)
** — 將Observable轉(zhuǎn)換成一個(gè)通知列表convert an Observable into a list of Notifications
**dematerialize(?)
** — 將上面的結(jié)果逆轉(zhuǎn)回一個(gè)Observable
**timestamp(?)
** — 給Observable發(fā)射的每個(gè)數(shù)據(jù)項(xiàng)添加一個(gè)時(shí)間戳
**serialize(?)
** — 強(qiáng)制Observable按次序發(fā)射數(shù)據(jù)并且要求功能是完好的
**cache(?)
** — 記住Observable發(fā)射的數(shù)據(jù)序列并發(fā)射相同的數(shù)據(jù)序列給后續(xù)的訂閱者
**observeOn(?)
** — 指定觀察者觀察Observable的調(diào)度器
**subscribeOn(?)
** — 指定Observable執(zhí)行任務(wù)的調(diào)度器
**doOnEach(?)
** — 注冊(cè)一個(gè)動(dòng)作,對(duì)Observable發(fā)射的每個(gè)數(shù)據(jù)項(xiàng)使用
**doOnCompleted(?)
** — 注冊(cè)一個(gè)動(dòng)作,對(duì)正常完成的Observable使用
**doOnError(?)
** — 注冊(cè)一個(gè)動(dòng)作贵少,對(duì)發(fā)生錯(cuò)誤的Observable使用
**doOnTerminate(?)
** — 注冊(cè)一個(gè)動(dòng)作呵俏,對(duì)完成的Observable使用,無論是否發(fā)生錯(cuò)誤
**doOnSubscribe(?)
** — 注冊(cè)一個(gè)動(dòng)作滔灶,在觀察者訂閱時(shí)使用
**doOnUnsubscribe(?)
** — 注冊(cè)一個(gè)動(dòng)作普碎,在觀察者取消訂閱時(shí)使用
**finallyDo(?)
** — 注冊(cè)一個(gè)動(dòng)作,在Observable完成時(shí)使用
**delay(?)
** — 延時(shí)發(fā)射Observable的結(jié)果
**delaySubscription(?)
** — 延時(shí)處理訂閱請(qǐng)求
**timeInterval(?)
** — 定期發(fā)射數(shù)據(jù)
**using(?)
** — 創(chuàng)建一個(gè)只在Observable生命周期存在的資源
**single(?)
** — 強(qiáng)制返回單個(gè)數(shù)據(jù)宽气,否則拋出異常
**singleOrDefault(?)
** — 如果Observable完成時(shí)返回了單個(gè)數(shù)據(jù)随常,就返回它,否則返回默認(rèn)數(shù)據(jù)
**toFuture(?)
**, **toIterable(?)
**, **toList(?)
** — 將Observable轉(zhuǎn)換為其它對(duì)象或數(shù)據(jù)結(jié)構(gòu)
-
這個(gè)頁面的操作符可用于根據(jù)條件發(fā)射或變換Observables萄涯,或者對(duì)它們做布爾運(yùn)算:
-
條件操作符
**amb(?)
** — 給定多個(gè)Observable绪氛,只讓第一個(gè)發(fā)射數(shù)據(jù)的Observable發(fā)射全部數(shù)據(jù)
**defaultIfEmpty(?)
** — 發(fā)射來自原始Observable的數(shù)據(jù),如果原始Observable沒有發(fā)射數(shù)據(jù)涝影,就發(fā)射一個(gè)默認(rèn)數(shù)據(jù)
(rxjava-computation-expressions
) **doWhile(?)
** — 發(fā)射原始Observable的數(shù)據(jù)序列枣察,然后重復(fù)發(fā)射這個(gè)序列直到不滿足這個(gè)條件為止
(rxjava-computation-expressions
) **ifThen(?)
** — 只有當(dāng)某個(gè)條件為真時(shí)才發(fā)射原始Observable的數(shù)據(jù)序列,否則發(fā)射一個(gè)空的或默認(rèn)的序列
**skipUntil(?)
** — 丟棄原始Observable發(fā)射的數(shù)據(jù)燃逻,直到第二個(gè)Observable發(fā)射了一個(gè)數(shù)據(jù)序目,然后發(fā)射原始Observable的剩余數(shù)據(jù)
**skipWhile(?)
** — 丟棄原始Observable發(fā)射的數(shù)據(jù),直到一個(gè)特定的條件為假伯襟,然后發(fā)射原始Observable剩余的數(shù)據(jù)
(rxjava-computation-expressions
) **switchCase(?)
** — 基于一個(gè)計(jì)算結(jié)果猿涨,發(fā)射一個(gè)指定Observable的數(shù)據(jù)序列
**takeUntil(?)
** — 發(fā)射來自原始Observable的數(shù)據(jù),直到第二個(gè)Observable發(fā)射了一個(gè)數(shù)據(jù)或一個(gè)通知
**takeWhile(?)
and takeWhileWithIndex(?)
** — 發(fā)射原始Observable的數(shù)據(jù)姆怪,直到一個(gè)特定的條件為真叛赚,然后跳過剩余的數(shù)據(jù)
(rxjava-computation-expressions
) **whileDo(?)
** — if a condition is true, emit the source Observable's sequence and then repeat the sequence as long as the condition remains true如果滿足一個(gè)條件,發(fā)射原始Observable的數(shù)據(jù)稽揭,然后重復(fù)發(fā)射直到不滿足這個(gè)條件為止
(rxjava-computation-expressions) — 表示這個(gè)操作符當(dāng)前是可選包 rxjava-computation-expressions
的一部分俺附,還沒有包含在標(biāo)準(zhǔn)RxJava的操作符集合里
-
布爾操作符
**all(?)
** — 判斷是否所有的數(shù)據(jù)項(xiàng)都滿足某個(gè)條件
**contains(?)
** — 判斷Observable是否會(huì)發(fā)射一個(gè)指定的值
**exists(?)
and isEmpty(?)
** — 判斷Observable是否發(fā)射了一個(gè)值
**sequenceEqual(?)
** — test the equality of the sequences emitted by two Observables判斷兩個(gè)Observables發(fā)射的序列是否相等