Rx常用操作符

常用操作符

Observable.from()

  • 它接收一個集合作爲輸入,然後每次輸出一個元素給subscriber,將集合依次發送,

map

  • 用來把把一個事件轉換爲另一個事件的

flatmap

  • 接收一個Observable的輸出作爲輸入,同時輸出另外一個Observable

concatmap

  • 類似flatmap,區別是遵循事件的順序

switchmap

  • observable發送新數據時,舊數據訂閱還未完成,取消舊的,開始新的

filter

  • 過濾

take

  • 指定數量

doOnNext

  • 每次輸出一個元素之前做額外的事

doOnSubsrcibe

  • 類似onStart(),不過可以指定線程,由之後的subscribeOn指定

subscribeOn

  • 事件發送的線程,subscribe() 所發生的線程,即 Observable.OnSubscribe 被激活時所處的線程

img

obserberOn

  • 事件接收的線程,Subscriber 所運行在的線程,(可能是UI線程),切換之後操作所在的線程

img

Scheduler

  • Schedulers.immediate() 默認在當前線程運行
  • Schedulers.newThread()
  • Scheduler.io 和 newThread() 差不多,區別在於 io() 的內部實現是是用一個無數量上限的線程池,可以重用空閒的線程,因此多數情況下 io() 比 newThread() 更有效率
  • Scheduler.commputation
  • AndroidSchedulers.mainThread

CompositeSubscription

  • 持有所有的Subscriptions,然後在onDestroy()或者onDestroyView()裏取消所有的訂閱

debounce

  • 發送指定時間以後的數據,可用於防抖

onBackpressureBuffer

  • 防止數據發送過快,緩存起來

ofType(class)  

  • 指定某個類型的class,過濾屬於這個類型的的結果,其它拋棄

buffer

  • 收集單個事件輸出一個數組

concat

  • 將多個observable ,按順序串聯起來

first

  • 從串聯隊列中取出併發送第一個事件,也可以依次過濾(三級緩存)

compose

combineLastest

  • CombineLatest操作符行爲類似於zip,但是隻有當原始的Observable中的每一個都發射了一條數據時zip才發射數據。CombineLatest則在原始的Observable中任意一個發射了數據時發射一條數據。當原始Observables的任何一個發射了一條數據時,CombineLatest使用一個函數結合它們最近發射的數據,然後發射這個函數的返回值。

doOnRequest

RxBinding

  • android 監聽事件包裝

     RxView.clicks

    RxTextView.textChanges

    RxAdapterView.itemClicks

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章