RxJava 常用操作符
常用操作符
創建操作
用于創建Observable(被觀察者)的操作符
- Create(創建) — 通過調用觀察者(observer)的方法從頭開始創建一個Observable
- Defer(推遲) — 在觀察者訂閱之前不創建這個Observable,為每一個觀察者創建一個新的Observable
- Empty/Never/Throw — 創建行為有限和非常精確的特殊Observable
- From(來自) — 將一些其它的對象或數據結構轉換為Observable
- Interval(間隔) — 創建一個Observable,它發出以特定時間間斷的整數序列
- Just(僅僅) — 將一個對象或者一組對象轉換為一個會發出該對象或那些對象的Observable
- Range(范圍) — 創建一個發出指定范圍的整數序列的Observable
- Repeat(重復) — 創建一個重復發出特定的數據項或序列的Observable
- Start(開始) — 創建一個發出函數的返回值的Observable
- Timer(定時器) — 創建在一個指定的延遲之后發出單個數據項的Observable
變換操作
用于對Observable發出的數據進行變換的操作符
- Buffer(緩沖) — 定期從Observable收集數據到一個集合,并將這些數據項打包發出,而不是一次發出一個
- FlatMap(扁平映射) — 將Observable發出的數據變換為Observables集合,然后將這些 Observable發出的數據平坦化的放進一個單獨的Observable,可以認為是一個將嵌套的數據結構展開的過程
- GroupBy(分組) — 將Observable分拆為一組Observable,將原始Observable發出的數據按Key分組,每一個Observable發出一組不同的數據項
- Map(映射) — 通過對序列的每一項都應用一個函數變換Observable發出的數據,實質是對序列中的每一項執行一個函數,函數的參數就是這個數據項
- Scan(掃描) — 對Observable發出的每一項數據應用一個函數,然后按順序依次發出這些值
- Window(窗口) — 定期將來自Observable的數據分拆成一些Observable窗口,然后發出這些窗口,而不是每次發出一項。類似于Buffer,但Buffer發出的是數據,Window發出的是Observable,每一個Observable發出原始Observable的數據的一個子集
- cast(強轉) — 在發出數據之前強制將Observable發出的所有數據轉換為指定類型
過濾操作
用于從Observable發射的數據中選擇性的過濾一些數據的操作符
- Debounce(防反跳)— 如果在特定的時間跨度已經過去而沒有發出另一個數據項,則只從Observable發出一個數據項
- Distinct(去重) — 抑制Observable發出的重復數據
- ElementAt(取值) — 取值取特定位置的那一項數據
- Filter(過濾) — 過濾掉沒有通過斷言測試的數據項,只發射通過測試的
- First(首選) — 只從Observable發出第一個數據項滿足條件的第一個數據項
- IgnoreElements(忽略所有的數據) — 不從Observable發出任何數據項,但保留終止通知(onError或 onCompleted)
- Last(末項) — 只發出Observable發出最后一條數據
- Sample(抽樣檢查) — 定期發射最新的數據,等于就是數據抽樣,有的實現里叫ThrottleFirst
- Skip(跳過) — 跳過由Observable發出的前n個數據項
- SkipLast(跳過末項) — 跳過由Observable發出的最好n個數據項
- Take — 只發出由Observable發出的前n項數據
- TakeLast — 只發出由Observable發出的最好n項數據
組合操作
用于將多個Observable組合成一個單一的Observable的操作符
- And/ Then/When - 將兩個或更多個Observables通過Pattern(模式)和Plan(計劃)發出的數據組合成一個數據集合
- CombineLatest - 當項由兩個Observable中的任一個發出時,通過指定的函數組合每個Observable發出的最新項,并基于此函數的結果發出項
- Join - 當在根據由另一Observable發射的項目定義的時間窗期間發出來自一個Observable的項目時,就將兩個Observable發射的數據組合成一個并發射
- Merge(合并) - 將多個Observable發射的數據組合并成一個
- StartWith(以…開始) - 在開始從源Observable發出項之前,先發出指定的數據項或數據序列
- Switch(切換) - 將一個發出Observable的Observable轉換為另一個Observable,并逐個發射原來Observable最近發射的數據
- Zip - 通過指定的函數將多個Observable的發射組合在一起,并根據此函數的結果為每個組合發出單個數據項
錯誤處理操作
有助于從Observable的錯誤通知中恢復的操作符
- Catch(捕獲) — 繼續序列操作,將錯誤替換為正常的數據,從onError通知中恢復
- Retry(重試) — 如果Observable發射了一個onError通知,重新訂閱它,希望它將完成并沒有錯誤
輔助操作
用于處理Observable的操作符
- Delay — 延遲一段時間發射結果數據
- Do — 注冊對各種Observable生命周期事件采取的操作
- Materialize/Dematerialize — 將發射的數據和通知都當做數據發射,或者反過來
- ObserveOn(觀察在) — 指定Observer觀察Observable的調度器(Scheduler)(工作線程)
- Serialize(序列化) — 強制Observable按次序發射數據并且功能是有效的
- Subscribe(訂閱) — 收到Observable發射的數據和通知后執行的操作
- SubscribeOn(訂閱在) — 指定Observable應該在哪個調度器上執行
- TimeInterval(時間間隔) — 將一個Observable轉換為發射兩個數據之間所耗費時間的Observable
- Timeout(超時) — 如果過了指定的一段時間沒有發射數據,則發射錯誤通知
- Timestamp(時間戳) — 給Observable發射的每個數據項添加一個時間戳
- Using — 創建一個與Observable相同生命周期內存在的一次性資源
條件和布爾操作
用于評估,判斷一個或多個Observable或Observable中發出的數據項的操作符
- All — 判斷Observable發射的所有的數據項是否都滿足某些條件
- Amb — 給定兩個或者多個源Observe,只讓第一個發出數據的Observable發出全部數據
- Contains — 判斷Observable是否發射指定的數據項
- DefaultIfEmpty — 發射來自原始Observable的數據,如果原始Observable沒有發射數據,就發射一個默認數據
- SequenceEqual — 判斷兩個Observable是否發出相同的數據序列
- SkipUntil — 丟棄原始Observable發射的數據,直到第二個Observable發射了一個數據,然后發射原始Observable的剩余數據
- SkipWhile — 丟棄原始Observable發射的數據,直到一個特定的條件為false,然后發射原始Observable剩余的數據
- TakeUntil — 丟棄在第二個Observable發出數據項或終止后由Observable發出的數據項
- TakeWhile — 丟棄在指定條件變為false之后由Observable發出的項
數學和聚合操作
對Observable發出的整個序列進行操作的操作符
- Average(平均值) — 計算Observable發射的數據序列的平均值,然后發射這個結果
- Concat — 不交錯的連接多個Observable的數據
- Count(數量) — 計算Observable發射的數據個數,并只發送此值
- Max(最大值) — 計算并發射數據序列的最大值
- Min(最小值) — 計算并發射數據序列的最小值
- Reduce(歸納) — 按順序對數據序列的每一個應用某個函數,然后返回這個值
- Sum(總和) — 計算并發射數據序列的和
背壓操作
- backpressure operators - 為了應對觀察者消費事件比被觀察者生產事件更快,所以需要背壓
連接操作
一些有精確可控的訂閱行為的特殊Observable
- Connect(連接) — 指示可連接的Observable開始發送數據給訂閱者
- Publish — 將普通的Observable轉換為可連接的Observable
- RefCount — 使一個可連接的Observable表現得像一個普通的Observable
- Replay — 確保所有的觀察者收到同樣的數據序列,即使他們在Observable開始發射數據之后才訂閱
轉換操作
- To(變成) — 將Observable轉換為其它的對象或數據結構
- Blocking(阻塞) — 阻塞Observable的操作符
來自:http://blog.csdn.net/qq_21793463/article/details/60125692
本文由用戶 cpanfd4051 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!