RxSwift操作符分類

RxSwift操作符分類

一、我想要創(chuàng)建一個Observable

  1. 產(chǎn)生特定的一個元素:just
  2. 經(jīng)過一段延時:timer
  3. 從一個序列拉取元素:from
  4. 重復(fù)的產(chǎn)生某一個元素:repeatElement
  5. 存在自定義邏輯:create
  6. 每次訂閱時產(chǎn)生:deferred
  7. 每隔一段時間,發(fā)出一個元素:interval
  8. 在一段延時后:timer
  9. 一個空序列,只有一個完成事件:empty
  10. 一個任何事件都沒有產(chǎn)生的序列:never

二、我想要創(chuàng)建一個Observable通過組合其他的 Observables

  1. 任意一個Observable產(chǎn)生了元素,就發(fā)出這個元素:merge
  2. 讓這些Observables一個接一個的發(fā)出元素,當(dāng)上一個Observable元素發(fā)送完畢后,下一個Observable才能開始發(fā)出元素:concat
  3. 組合多個Observables的元素
    • 當(dāng)每一個Observable都發(fā)出一個新的元素:zip
    • 當(dāng)任意一個Observable發(fā)出一個新的元素:combineLatest

三、我想要轉(zhuǎn)換Observable的元素后,再將它們發(fā)出來

  1. 對每個元素直接轉(zhuǎn)換:map
  2. 轉(zhuǎn)換到另一個ObservableflatMap
    • 只接收最新的元素轉(zhuǎn)換的Observable所產(chǎn)生的元素:flatMapLatest
    • 每一個元素轉(zhuǎn)換的Observable按順序產(chǎn)生元素:concatMap
  3. 基于所有遍歷過的元素: scan

四、我想要將產(chǎn)生的每一個元素,拖延一段時間后再發(fā)出:delay

五、我想要將產(chǎn)生的事件封裝成元素發(fā)送出來

  1. 將他們封裝成 Event<Element>:materialize
    • 然后解封出來:dematerialize

六、我想要忽略掉所有的next事件,只接收completederror事件:ignoreElements

七、我想創(chuàng)建一個新的Observable在原有的序列前面加入一些元素:startWith

八、我想從Observable中收集元素,緩存這些元素之后在發(fā)出:buffer

九、我想將Observable拆分成多個Observableswindow

  1. 基于元素的共同特征:groupBy

十、我想只接收Observable中特定的元素

  1. 發(fā)出唯一的元素:single

十一、我想重新從Observable中發(fā)出某些元素

  1. 通過判定條件過濾出一些元素:filter
  2. 僅僅發(fā)出頭幾個元素:take
  3. 僅僅發(fā)出尾部的幾個元素:takeLast
  4. 僅僅發(fā)出第 n 個元素:elementAt
  5. 跳過頭幾個元素
    • 跳過頭 n 個元素:skip
    • 跳過頭幾個滿足判定的元素:skipWhile,skipWhileWithIndex
    • 跳過某段時間內(nèi)產(chǎn)生的頭幾個元素:skip
    • 跳過頭幾個元素直到另一個Observable發(fā)出一個元素:skipUntil
  6. 只取頭幾個元素
    • 只取頭幾個滿足判定的元素:takeWhile,takeWhileWithIndex
    • 只取某段時間內(nèi)產(chǎn)生的頭幾個元素:take
    • 只取頭幾個元素直到另一個Observable發(fā)出一個元素:takeUntil
  7. 周期性的對Observable抽樣:sample
  8. 發(fā)出那些元素,這些元素產(chǎn)生后的特定的時間內(nèi),沒有新的元素產(chǎn)生:debounce
  9. 直到元素的值發(fā)生變化,才發(fā)出新的元素:distinctUntilChanged
    • 并提供元素是否相等的判定函數(shù):distinctUntilChanged
  10. 在開始發(fā)出元素時,延時后進行訂閱:delaySubscription

十二、我想要從一些Observables中,只取第一個產(chǎn)生元素的 Observableamb

十三、我想評估Observable的全部元素

  1. 并且對每個元素應(yīng)用聚合方法,待所有元素都應(yīng)用聚合方法后,發(fā)出結(jié)果:reduce
  2. 并且對每個元素應(yīng)用聚合方法,每次應(yīng)用聚合方法后,發(fā)出結(jié)果:scan

十四、我想把 Observable 轉(zhuǎn)換為其他的數(shù)據(jù)結(jié)構(gòu):as...

  1. asObservable()
  2. asDriver()
  3. ...

十五、我想在某個Scheduler應(yīng)用操作符:subscribeOn

  1. 在某個 Scheduler 監(jiān)聽:observeOn

十六、我想要Observable發(fā)生某個事件時, 采取某個行動:do

十七、我想要Observable發(fā)出一個error事件:error

  1. 如果規(guī)定時間內(nèi)沒有產(chǎn)生元素:timeout

十八、我想要Observable發(fā)生錯誤時,優(yōu)雅的恢復(fù)

  1. 如果規(guī)定時間內(nèi)沒有產(chǎn)生元素,就切換到備選Observabletimeout
  2. 如果產(chǎn)生錯誤,將錯誤替換成某個元素 :catchErrorJustReturn
  3. 如果產(chǎn)生錯誤,就切換到備選ObservablecatchError
  4. 如果產(chǎn)生錯誤,就重試 :retry

十九、我創(chuàng)建一個Disposable資源,使它與Observable具有相同的壽命:using

二十、我創(chuàng)建一個Observable,直到我通知它可以產(chǎn)生元素后,才能產(chǎn)生元素:publish

  1. 并且,就算是在產(chǎn)生元素后訂閱,也要發(fā)出全部元素:replay
  2. 并且,一旦所有觀察者取消觀察,他就被釋放掉:refCount
  3. 通知它可以產(chǎn)生元素了:connect

本篇來源RxSwift中文文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容