《學習記錄》RxJava常用操作符。

RxJava常用操作符

  1. Repeat、Retry,repeat是onComplete後重新執行subscribe,retry是onError後重新執行subscribe
  2. repeatwhen、retryWhen是自定義重新subscribe的規則。

  3. all ,如果發射的數據都滿足條件,則返回true

  4. amd,幾個Observable合併起來,只發送最先發送數據的observable.

  5. contains,發送的數據裏知否包含一個數據。

  6. isEmpty,是否發送過數據,發送過就是false。
  7. defaultIfEmpty,如果是emtry,就發送一個默認數據。
  8. SequenceEqual,用來判斷兩個observable是否相同,發送序列相同、數據相同,結果狀態相同。
  9. skipUtil,skipWhile,
    這兩個操作符都是根據條件來跳過一些數據,不同之處在於SkipUnitl是根據一個標誌Observable來判斷的,當這個標誌Observable沒有發射數據的時候,所有源Observable發射的數據都會被跳過;當標誌Observable發射了一個數據,則開始正常地發射數據。SkipWhile則是根據一個函數來判斷是否跳過數據,當函數返回值爲true的時候則一直跳過源Observable發射的數據;當函數返回false的時候則開始正常發射數據。
  10. takeUtil,takeWhile
    TakeUntil和TakeWhile操作符可以說和SkipUnitl和SkipWhile操作符是完全相反的功能。TakeUntil也是使用一個標誌Observable是否發射數據來判斷,當標誌Observable沒有發射數據時,正常發射數據,而一旦標誌Observable發射過了數據則後面的數據都會被丟棄。TakeWhile則是根據一個函數來判斷是否發射數據,當函數返回值爲true的時候正常發射數據;當函數返回false的時候丟棄所有後面的數據。
  11. defer 延遲Observable的創建,當有觀察者subscrible時才創建observable。
  12. range,發送一個範圍內的數據。
  13. interval,輪詢操作,發送的數據從0開始,一次遞增。三個參數的函數可以初始化開始延遲時間。
  14. timer,延遲設置的時間來進行操作,三個參數的可以進行輪訓操作,類似interval。
  15. filter,過濾。返回boolean類型。
  16. take,只發送前幾個數據。
  17. takeLast,只需要後幾個數據。
  18. distinct,去重操作。
  19. distinctUntilChanged,如果當前數據跟前一個數據一樣,則去掉。例如溫度計的計數。
  20. first,last,發送第一個或者最後一個元素。
  21. skip、skipLast,跳過或者跳過最後幾個元素。
  22. ElementAt,只發送固定的選擇的元素。ElemtAtOrDefault,類似ElementAt,多了一個默認值。
  23. sample,在一定的時間間隔內發送最後一個元素。
  24. throttleFirst,在一定的時間間隔內只發送第一個元素。比較防止多次點擊。
  25. timeout,設置一個超時時間,如果在超時時間內沒有發送元素,則出發onerror。
  26. debounce,防抖動,在一定的時間間隔內,延時一段時間,如果沒有新數據發送,則發送最後一個數據。

Map家族

  1. map, 對結果進行一次變換
  2. flatMap,以平鋪的方式進行變換,返回的結果也是Observable。
  3. concatMap,按照以前的順序發送數據。
  4. flatMapIterable,類似map,但返回的是數組。
  5. switchMap,停止監聽當前的數據,轉而監聽新的數據。
  6. scan,累加器函數。
  7. groupby,分組函數,第一個參數是分組的key,第二個參數是對數據做出改變。
  8. butter,把發送數據緩存起來
  9. window,和buffer類似,不過返回的是Observable
  10. cast,接收一個class,轉換爲另一種數據類型。

  11. merge:合併多個observable,mergeDelayError,其中一個observable發生錯誤也繼續,最後出發onError

  12. zip,把兩個observable按照一定規則合併成一個。
  13. join,拼接一個observable到另一個observable上,第二個func1表示源observable的有效時長,第三個func1表示目標observable的有效時長,第四個func2表示對數據的處理。
  14. combileLast,結合最後一個發射的目標。
  15. and,then,when,組合一個joinObservable,進行處理數據。
  16. switch,當有新的observable發送數據時,舊的observable的數據被丟棄。
  17. startWith,在發送數據之前,先發送一些數據。
  18. concat,發送數據後,追加一些數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章