RxJava的變換操做符和過濾操做符彙總

變換操做符

方法名 用法
map() 對序列的每一項都用一個函數來變換Observable發射的數據序列
flatMap()

concatMap() 函數

flatMapIterable()源碼分析

將Observable發射的數據集合變換爲Observable集合,而後將這些Observable發射的數據平坦話地放進一個單獨的Observable中
switchMap() 將Observable發射的數據集合轉換爲Observables集合,而後只發射這些Observables最近發射過的數據
scan() 對Observable發射的每一項數據應用一個函數,而後按順序依次發射每個值
groupBy() 將Observable拆分爲Observable集合,將原始Observable發射的數據按Key分組,每個Observable發射過一組不一樣的數據
buffer() 按期從Observable收集數據到一個集合,而後把這些數據集合打包發射,而不是一個發射一個
window() 按期未來自Observable的數據拆分紅一些Obs窗口,而後發射這些窗口,而不是每次發射一項
cast() 在發射以前強制將Observable發射的全部數據轉換爲指定類型

過濾操做符

方法名 用法
filter() 過濾數據
takeLast() 只發射最後的N項數據
last() 只發射最後一項數據
lastDefault() 只發射最後一項數據,若是Observable爲空,就發射默認值
takeLastBuffer() 將最後的N項數據看成單個數據發射
skip() 跳過開始的N項數據
skipLast() 跳過最後的N項數據
first() and takeFirst() 只發射第一項數據,或者知足某種條件的第一項數據
firstDefault() 只發射第一項數據,若是Observable爲空,就發射默認值
elementAt() 發射第N項數據
elementAtOrDefault() 發射第N項數據,若是Observable數據少於N項,則發射默認值
sample() or throttleLast() 按期發射Observable最近的數據
throttleFirst() 按期發射Observable發射的第一項數據
throttleWithTimeout() or debounce() 只有當Observable在指定的時間段後尚未發射數據時,才發射一個數據
timeout() 若是在一個指定的時間段後還沒發射數據,就發射一個異常
distinct() 過濾掉重複的數據
distinctUntilChanged() 過濾掉連續重複的數據
ofType() 只發射指定類型的數據
ignoreElements() 丟棄全部的正常數據,只發射錯誤或完成的通知

後續補上部分源碼分析spa

相關文章
相關標籤/搜索