Rx操作符-分類解釋

注:本文譯自官網連接

按功能進行分類 Operators By Category

1.創建Observable

  • Create —以編程方式調用觀察者方法從頭開始(from scratch)創建一個Observable
  • Defer — 在觀察者訂閱之后創建Observable,并為每個觀察者創建一個新的Observable
  • Empty/Never/Throw — 創建具有非常精確和有限行為的Observables。
  • From/fromArray — 將一些其他對象或數據結構轉換為Observable。
  • Interval — 創建一個Observable,它發出一系列整數,每間隔一段特定時間發射一個整數。
  • Just — 將一個對象或一組對象轉換為一個可以發出該對象或那些對象的Observable。
  • Range — 創建一個發射某一范圍連續整數的Observable,2個參數,起始值和個數
  • Repeat — 創建一個可重復發射特定項目或項目序列的Observable
  • Start — 創建一個可以發出函數返回值的Observable 注:RxJava2中沒有該操作符
  • Timer — 創建一個Observable,在給定的延遲后發射一個單個項目的Observable

操作轉換Observable的發射值

  • Buffer —定期將Observable中的數據項收集到bundle包中并發出這些bundle包,而不是一次只發射一個數據
  • FlatMap — 將Observable發射的數據項轉換為多個Observable,然后將這些Obserable平坦化為單個Observable
  • GroupBy — 將一個Observable分成一組Observable,每個Observable從原始Observable發出不同的一組數據,按鍵的值組織
  • Map — 通過一個函數轉化每個從Observable發射出的值。
  • Scan — 對Observable發出的每個數據項按順序應用一個函數,并發出每個連續的值.
  • Window — 定期將Observable中的數據項細分為Observable窗口并發出這些窗口,而不是一次發送一個項目

過濾Observable

從源Observable有選擇的發射數據的操作符

  • Debounce — 如果特定的時間跨度已經過去而沒有發射另一個數據,則只從Observable發射某個數據
  • Distinct — 去除重復數據項
  • ElementAt — 只發射某個數據項
  • Filter — 只發射某些通過測試(test)的數據項
  • First — 只發射Observable中的第一個item或者第一個滿足某條件的item
  • IgnoreElements — Observable不發射任何項目,但要鏡像它的終止通知
  • Last — 只發射最后一個item.
  • Sample — 在一個時間周期中,發射最近的item
  • Skip — 不發射前n個items
  • SkipLast — 不發射最后n個items
  • Take — 只發射前n個items
  • TakeLast — 只發射最后n個items

合并Observables

合并幾個源Observables來創建唯一一個Observable的操作符

  • And/Then/When — 通過PatternPlan中介結合由兩個及以上的Observables發射的items
  • CombineLatest — 當一個item由兩個Observable發射時,通過指定的功能合并每個Observable發射的最新item,并根據此功能的結果發射item
  • Join — 當一個Observable中的item在根據另一個Observable發射的item定義的時間窗口內發射時,將兩個Observable發出的項目組合起來
  • Merge — 通過合并多個Observables發射的items把多個Observables合并為一個Observable
  • StartWith — 返回一個Observable,先發射一個指定的值,再發射源Observable發射的值
  • Switch — 將一個Observable轉換成一個新Observable,新Observable發射這些Observables中最近發射的item
  • Zip — 通過指定的函數將多個Observable的發射的items結合在一起,并發射結合的items

錯誤處理操作符

幫助從Observable的錯誤中恢復的操作符

  • Catch — 從onError通知中恢復繼續序列
  • Retry — 如果一個源Observable發送一個onError通知,重新訂閱它,希望它能夠完成而沒有錯誤

Observable使用操作符

Observable的有用的工具箱

  • Delay — 將Observable發射的數據推遲一定時間
  • Do — 注冊一個處理各種Observable生命周期事件的動作,RxJava2中的doOnNext,doAfterNext,doOnComplete等方法
  • Materialize/Dematerialize — 代表發出的items和作為發射items發送的通知,或者反過來
  • ObserveOn — 指定觀察者將觀察此Observable的調度程序(線程),即指定觀察者Observer的運行線程
  • Serialize — 強制Observable進行序列化調用并表現良好
  • Subscribe — 根據Observable發射的數據和通知進行操作,即指定一個Observer。
  • SubscribeOn — 指定該Observable的運行線程
  • TimeInterval — 將發射items的Observable轉換為能夠發出指示這些發射items之間流逝的時間量的Observable(不好翻譯,看原文吧)
    convert an Observable that emits items into one that emits indications of the amount of time elapsed between those emissions
  • Timeout — 鏡像源Observable,但是如果一段時間內沒有發出任何條目則發出錯誤通知
  • Timestamp — 給Observable發出的條目附加一個時間戳
  • Using — 創建一個與Observable具有相同生命周期的可支配(用后可拋棄)資源

條件與布爾運算符 Conditional and Boolean Operators

評估計算一個或多個Observables或Observables發出的條目的操作符

  • All — 確定Observable發出的所有條目是否滿足某些條件
  • Amb — 給定一個或多個源Observables,僅從第一個發射item的Observable發射所有items
  • Contains — 確定Observable是否發出特定的item
  • DefaultIfEmpty — 從源Observable中發射items,如果源Observable不發射任何item則發射一個默認的item。
  • SequenceEqual — 確定兩個Observables是否發出相同的items序列
  • SkipUntil — 丟棄Observable發射的items,直到第二個Observable發射item
  • SkipWhile — 丟棄Observable發射的items,直到特定條件變為false
  • TakeUntil — 在第二個Observable發射一個item或者終止后,丟棄Observable發射的items
  • TakeWhile — 某特定條件變為false后,丟棄Observable發射的item
    SkipWhile時一直丟棄,直到某個條件變為false,然后就不丟棄了。TakeWhile是一直不丟棄,直到某個條件變為false后,開始丟棄

數學與集合運算符 Mathematical and Aggregate Operators

對某個Observable發射的所有items進行操作的操作符

  • Average — 計算Observable發射的所有數字的平均值,并發射該平均值
  • Concat — 按序發射2個或多個Observables發射的items,各個Observables的items不交錯。
  • Count — 計算源Observable發射的items的數量,并僅發射該值。
  • Max — 確定并發射Observable發射的最大值item。
  • Min — 確定并發射Observable發射的最小值item。
  • Reduce — 對Observable發射的每個item按照順序應用某個函數計算和發出最終值。
  • Sum — 計算Observable發射的數字的總和,并發射該值。

背壓 Backpressure Operators

可連接的Observable操作符 Connectable Observable Operators

擁有更精確控制的訂閱狀態的特定Observables

  • Connect — 指示可連接的Observable開始向訂閱者發送項目
  • Publish — 將普通的Observable轉換為可連接的Observable
  • RefCount — 使可連接的Observable像普通的Observable一樣運行
  • Replay — 確保所有observers都能看到相同的發射的items,即使他們在Observable開始發射items之后訂閱它

轉化Observables的操作符 Operators to Convert Observables

  • To — 轉化一個Observable為另一個object或數據結構。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,330評論 2 377

推薦閱讀更多精彩內容

  • 創建操作 用于創建Observable的操作符Create通過調用觀察者的方法從頭創建一個ObservableEm...
    rkua閱讀 1,854評論 0 1
  • 前言 按照官方的分類,操作符大致分為以下幾種: Creating Observables(Observable的創...
    小玉1991閱讀 1,066評論 0 1
  • 作者: maplejaw本篇只解析標準包中的操作符。對于擴展包,由于使用率較低,如有需求,請讀者自行查閱文檔。 創...
    maplejaw_閱讀 45,751評論 8 93
  • RxJava正在Android開發者中變的越來越流行。唯一的問題就是上手不容易,尤其是大部分人之前都是使用命令式編...
    劉啟敏閱讀 1,888評論 1 7
  • 響應式編程簡介 響應式編程是一種基于異步數據流概念的編程模式。數據流就像一條河:它可以被觀測,被過濾,被操作,或者...
    說碼解字閱讀 3,092評論 0 5