RxJava常用操作符
- Repeat、Retry,repeat是onComplete後重新執行subscribe,retry是onError後重新執行subscribe
repeatwhen、retryWhen是自定義重新subscribe的規則。
all ,如果發射的數據都滿足條件,則返回true
amd,幾個Observable合併起來,只發送最先發送數據的observable.
contains,發送的數據裏知否包含一個數據。
- isEmpty,是否發送過數據,發送過就是false。
- defaultIfEmpty,如果是emtry,就發送一個默認數據。
- SequenceEqual,用來判斷兩個observable是否相同,發送序列相同、數據相同,結果狀態相同。
- skipUtil,skipWhile,
這兩個操作符都是根據條件來跳過一些數據,不同之處在於SkipUnitl是根據一個標誌Observable來判斷的,當這個標誌Observable沒有發射數據的時候,所有源Observable發射的數據都會被跳過;當標誌Observable發射了一個數據,則開始正常地發射數據。SkipWhile則是根據一個函數來判斷是否跳過數據,當函數返回值爲true的時候則一直跳過源Observable發射的數據;當函數返回false的時候則開始正常發射數據。 - takeUtil,takeWhile
TakeUntil和TakeWhile操作符可以說和SkipUnitl和SkipWhile操作符是完全相反的功能。TakeUntil也是使用一個標誌Observable是否發射數據來判斷,當標誌Observable沒有發射數據時,正常發射數據,而一旦標誌Observable發射過了數據則後面的數據都會被丟棄。TakeWhile則是根據一個函數來判斷是否發射數據,當函數返回值爲true的時候正常發射數據;當函數返回false的時候丟棄所有後面的數據。 - defer 延遲Observable的創建,當有觀察者subscrible時才創建observable。
- range,發送一個範圍內的數據。
- interval,輪詢操作,發送的數據從0開始,一次遞增。三個參數的函數可以初始化開始延遲時間。
- timer,延遲設置的時間來進行操作,三個參數的可以進行輪訓操作,類似interval。
- filter,過濾。返回boolean類型。
- take,只發送前幾個數據。
- takeLast,只需要後幾個數據。
- distinct,去重操作。
- distinctUntilChanged,如果當前數據跟前一個數據一樣,則去掉。例如溫度計的計數。
- first,last,發送第一個或者最後一個元素。
- skip、skipLast,跳過或者跳過最後幾個元素。
- ElementAt,只發送固定的選擇的元素。ElemtAtOrDefault,類似ElementAt,多了一個默認值。
- sample,在一定的時間間隔內發送最後一個元素。
- throttleFirst,在一定的時間間隔內只發送第一個元素。比較防止多次點擊。
- timeout,設置一個超時時間,如果在超時時間內沒有發送元素,則出發onerror。
- debounce,防抖動,在一定的時間間隔內,延時一段時間,如果沒有新數據發送,則發送最後一個數據。
Map家族
- map, 對結果進行一次變換
- flatMap,以平鋪的方式進行變換,返回的結果也是Observable。
- concatMap,按照以前的順序發送數據。
- flatMapIterable,類似map,但返回的是數組。
- switchMap,停止監聽當前的數據,轉而監聽新的數據。
- scan,累加器函數。
- groupby,分組函數,第一個參數是分組的key,第二個參數是對數據做出改變。
- butter,把發送數據緩存起來
- window,和buffer類似,不過返回的是Observable
cast,接收一個class,轉換爲另一種數據類型。
merge:合併多個observable,mergeDelayError,其中一個observable發生錯誤也繼續,最後出發onError
- zip,把兩個observable按照一定規則合併成一個。
- join,拼接一個observable到另一個observable上,第二個func1表示源observable的有效時長,第三個func1表示目標observable的有效時長,第四個func2表示對數據的處理。
- combileLast,結合最後一個發射的目標。
- and,then,when,組合一個joinObservable,進行處理數據。
- switch,當有新的observable發送數據時,舊的observable的數據被丟棄。
- startWith,在發送數據之前,先發送一些數據。
- concat,發送數據後,追加一些數據。