RxJava操作符小結(jié)

操作符參考鏈接:

https://mcxiaoke.gitbooks.io/rxdocs/content/Operators.html

1.創(chuàng)建操作符:

  • Create — 通過調(diào)用觀察者的方法從頭創(chuàng)建一個Observable

  • Defer — 在觀察者訂閱之前不創(chuàng)建這個Observable,為每一個觀察者創(chuàng)建一個新的Observable

  • Empty/Never/Throw — 創(chuàng)建行為受限的特殊Observable

  • From — 將其它的對象或數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為Observable

  • Interval — 創(chuàng)建一個定時發(fā)射整數(shù)序列的Observable

  • Just — 將對象或者對象集合轉(zhuǎn)換為一個會發(fā)射這些對象的Observable

  • Range — 創(chuàng)建發(fā)射指定范圍的整數(shù)序列的Observable

  • Repeat — 創(chuàng)建重復(fù)發(fā)射特定的數(shù)據(jù)或數(shù)據(jù)序列的Observable

  • Start — 創(chuàng)建發(fā)射一個函數(shù)的返回值的Observable

  • Timer — 創(chuàng)建在一個指定的延遲之后發(fā)射單個數(shù)據(jù)的Observable

2.變換操作符

  • Buffer — 緩存,可以簡單的理解為緩存,它定期從Observable收集數(shù)據(jù)到一個集合,然后把這些數(shù)據(jù)集合打包發(fā)射,而不是一次發(fā)射一個

  • FlatMap — 扁平映射,將Observable發(fā)射的數(shù)據(jù)變換為Observables集合,然后將這些Observable發(fā)射的數(shù)據(jù)平坦化的放進(jìn)一個單獨(dú)的Observable,可以認(rèn)為是一個將嵌套的數(shù)據(jù)結(jié)構(gòu)展開的過程。

  • GroupBy — 分組,將原來的Observable分拆為Observable集合,將原始Observable發(fā)射的數(shù)據(jù)按Key分組,每一個Observable發(fā)射一組不同的數(shù)據(jù)

  • Map — 映射,通過對序列的每一項(xiàng)都應(yīng)用一個函數(shù)變換Observable發(fā)射的數(shù)據(jù),實(shí)質(zhì)是對序列中的每一項(xiàng)執(zhí)行一個函數(shù),函數(shù)的參數(shù)就是這個數(shù)據(jù)項(xiàng)

  • Scan — 掃描,對Observable發(fā)射的每一項(xiàng)數(shù)據(jù)應(yīng)用一個函數(shù),然后按順序依次發(fā)射這些值

  • Window — 窗口,定期將來自O(shè)bservable的數(shù)據(jù)分拆成一些Observable窗口,然后發(fā)射這些窗口,而不是每次發(fā)射一項(xiàng)。類似于Buffer,但Buffer發(fā)射的是數(shù)據(jù),Window發(fā)射的是Observable,每一個Observable發(fā)射原始Observable的數(shù)據(jù)的一個子集

3.過濾操作符

  • Debounce — 只有在空閑了一段時間后才發(fā)射數(shù)據(jù),通俗的說,就是如果一段時間沒有操作,就執(zhí)行一次操作

  • Distinct — 去重,過濾掉重復(fù)數(shù)據(jù)項(xiàng)

  • ElementAt — 取值,取特定位置的數(shù)據(jù)項(xiàng)

  • Filter — 過濾,過濾掉沒有通過謂詞測試的數(shù)據(jù)項(xiàng),只發(fā)射通過測試的

  • First — 首項(xiàng),只發(fā)射滿足條件的第一條數(shù)據(jù)

  • IgnoreElements — 忽略所有的數(shù)據(jù),只保留終止通知(onError或onCompleted)

  • Last — 末項(xiàng),只發(fā)射最后一條數(shù)據(jù)

  • Sample — 取樣,定期發(fā)射最新的數(shù)據(jù),等于是數(shù)據(jù)抽樣,有的實(shí)現(xiàn)里叫ThrottleFirst

  • Skip — 跳過前面的若干項(xiàng)數(shù)據(jù)

  • SkipLast — 跳過后面的若干項(xiàng)數(shù)據(jù)

  • Take — 只保留前面的若干項(xiàng)數(shù)據(jù)

  • TakeLast — 只保留后面的若干項(xiàng)數(shù)據(jù)

4.輔助操作符

  • Delay — 延遲一段時間發(fā)射結(jié)果數(shù)據(jù)

  • Do — 注冊一個動作占用一些Observable的生命周期事件,相當(dāng)于Mock某個操作

  • Materialize/Dematerialize — 將發(fā)射的數(shù)據(jù)和通知都當(dāng)做數(shù)據(jù)發(fā)射,或者反過來

  • ObserveOn — 指定觀察者觀察Observable的調(diào)度程序(工作線程)

  • Serialize — 強(qiáng)制Observable按次序發(fā)射數(shù)據(jù)并且功能是有效的

  • Subscribe — 收到Observable發(fā)射的數(shù)據(jù)和通知后執(zhí)行的操作

  • SubscribeOn — 指定Observable應(yīng)該在哪個調(diào)度程序上執(zhí)行

  • TimeInterval — 將一個Observable轉(zhuǎn)換為發(fā)射兩個數(shù)據(jù)之間所耗費(fèi)時間的Observable

  • Timeout — 添加超時機(jī)制,如果過了指定的一段時間沒有發(fā)射數(shù)據(jù),就發(fā)射一個錯誤通知

  • Timestamp — 給Observable發(fā)射的每個數(shù)據(jù)項(xiàng)添加一個時間戳

  • Using — 創(chuàng)建一個只在Observable的生命周期內(nèi)存在的一次性資源

5.布爾和條件操作符

  • All — 判斷Observable發(fā)射的所有的數(shù)據(jù)項(xiàng)是否都滿足某個條件

  • Amb — 給定多個Observable,只讓第一個發(fā)射數(shù)據(jù)的Observable發(fā)射全部數(shù)據(jù)

  • Contains — 判斷Observable是否會發(fā)射一個指定的數(shù)據(jù)項(xiàng)

  • DefaultIfEmpty — 發(fā)射來自原始Observable的數(shù)據(jù),如果原始Observable沒有發(fā)射數(shù)據(jù),就發(fā)射一個默認(rèn)數(shù)據(jù)

  • SequenceEqual — 判斷兩個Observable是否按相同的數(shù)據(jù)序列

  • SkipUntil — 丟棄原始Observable發(fā)射的數(shù)據(jù),直到第二個Observable發(fā)射了一個數(shù)據(jù),然后發(fā)射原始Observable的剩余數(shù)據(jù)

  • SkipWhile — 丟棄原始Observable發(fā)射的數(shù)據(jù),直到一個特定的條件為假,然后發(fā)射原始Observable剩余的數(shù)據(jù)

  • TakeUntil — 發(fā)射來自原始Observable的數(shù)據(jù),直到第二個Observable發(fā)射了一個數(shù)據(jù)或一個通知

  • TakeWhile — 發(fā)射原始Observable的數(shù)據(jù),直到一個特定的條件為真,然后跳過剩余的數(shù)據(jù)

6.算術(shù)和聚合操作符

  • Average — 計算Observable發(fā)射的數(shù)據(jù)序列的平均值,然后發(fā)射這個結(jié)果

  • Concat — 不交錯的連接多個Observable的數(shù)據(jù)

  • Count — 計算Observable發(fā)射的數(shù)據(jù)個數(shù),然后發(fā)射這個結(jié)果

  • Max — 計算并發(fā)射數(shù)據(jù)序列的最大值

  • Min — 計算并發(fā)射數(shù)據(jù)序列的最小值

  • Reduce — 按順序?qū)?shù)據(jù)序列的每一個應(yīng)用某個函數(shù),然后返回這個值

  • Sum — 計算并發(fā)射數(shù)據(jù)序列的和

7.連接操作符

  • Connect — 指示一個可連接的Observable開始發(fā)射數(shù)據(jù)給訂閱者

  • Publish — 將一個普通的Observable轉(zhuǎn)換為可連接的

  • RefCount — 使一個可連接的Observable表現(xiàn)得像一個普通的Observable

  • Replay — 確保所有的觀察者收到同樣的數(shù)據(jù)序列,即使他們在Observable開始發(fā)射數(shù)據(jù)之后才訂閱

8.轉(zhuǎn)換操作符

  • To — 將Observable轉(zhuǎn)換為其它的對象或數(shù)據(jù)結(jié)構(gòu)

  • Blocking 阻塞Observable的操作符

操作符決策樹

幾種主要的需求

  • 直接創(chuàng)建一個Observable(創(chuàng)建操作)

  • 組合多個Observable(組合操作)

  • 對Observable發(fā)射的數(shù)據(jù)執(zhí)行變換操作(變換操作)

  • 從Observable發(fā)射的數(shù)據(jù)中取特定的值(過濾操作)

  • 轉(zhuǎn)發(fā)Observable的部分值(條件/布爾/過濾操作)

  • 對Observable發(fā)射的數(shù)據(jù)序列求值(算術(shù)/聚合操作)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本篇文章介主要紹RxJava中操作符是以函數(shù)作為基本單位,與響應(yīng)式編程作為結(jié)合使用的,對什么是操作、操作符都有哪些...
    嘎啦果安卓獸閱讀 2,991評論 0 10
  • 創(chuàng)建操作 用于創(chuàng)建Observable的操作符Create通過調(diào)用觀察者的方法從頭創(chuàng)建一個ObservableEm...
    rkua閱讀 1,958評論 0 1
  • 一、RxJava操作符概述 RxJava中的操作符就是為了提供函數(shù)式的特性,函數(shù)式最大的好處就是使得數(shù)據(jù)處理簡潔易...
    測天測地測空氣閱讀 685評論 0 1
  • 作者: maplejaw本篇只解析標(biāo)準(zhǔn)包中的操作符。對于擴(kuò)展包,由于使用率較低,如有需求,請讀者自行查閱文檔。 創(chuàng)...
    maplejaw_閱讀 46,218評論 8 93
  • 注:只包含標(biāo)準(zhǔn)包中的操作符,用于個人學(xué)習(xí)及備忘參考博客:http://blog.csdn.net/maplejaw...
    小白要超神閱讀 2,376評論 2 8

友情鏈接更多精彩內(nèi)容