RxSwift操作符分類
一、我想要創(chuàng)建一個Observable
- 產(chǎn)生特定的一個元素:
just - 經(jīng)過一段延時:
timer - 從一個序列拉取元素:
from - 重復(fù)的產(chǎn)生某一個元素:
repeatElement - 存在自定義邏輯:
create - 每次訂閱時產(chǎn)生:
deferred - 每隔一段時間,發(fā)出一個元素:
interval - 在一段延時后:
timer - 一個空序列,只有一個完成事件:
empty - 一個任何事件都沒有產(chǎn)生的序列:
never
二、我想要創(chuàng)建一個Observable通過組合其他的 Observables
- 任意一個
Observable產(chǎn)生了元素,就發(fā)出這個元素:merge - 讓這些
Observables一個接一個的發(fā)出元素,當(dāng)上一個Observable元素發(fā)送完畢后,下一個Observable才能開始發(fā)出元素:concat - 組合多個
Observables的元素- 當(dāng)每一個
Observable都發(fā)出一個新的元素:zip - 當(dāng)任意一個
Observable發(fā)出一個新的元素:combineLatest
- 當(dāng)每一個
三、我想要轉(zhuǎn)換Observable的元素后,再將它們發(fā)出來
- 對每個元素直接轉(zhuǎn)換:
map - 轉(zhuǎn)換到另一個
Observable:flatMap- 只接收最新的元素轉(zhuǎn)換的
Observable所產(chǎn)生的元素:flatMapLatest - 每一個元素轉(zhuǎn)換的
Observable按順序產(chǎn)生元素:concatMap
- 只接收最新的元素轉(zhuǎn)換的
- 基于所有遍歷過的元素:
scan
四、我想要將產(chǎn)生的每一個元素,拖延一段時間后再發(fā)出:delay
五、我想要將產(chǎn)生的事件封裝成元素發(fā)送出來
- 將他們封裝成 Event<Element>:materialize
- 然后解封出來:dematerialize
六、我想要忽略掉所有的next事件,只接收completed和error事件:ignoreElements
七、我想創(chuàng)建一個新的Observable在原有的序列前面加入一些元素:startWith
八、我想從Observable中收集元素,緩存這些元素之后在發(fā)出:buffer
九、我想將Observable拆分成多個Observables:window
- 基于元素的共同特征:
groupBy
十、我想只接收Observable中特定的元素
- 發(fā)出唯一的元素:
single
十一、我想重新從Observable中發(fā)出某些元素
- 通過判定條件過濾出一些元素:
filter - 僅僅發(fā)出頭幾個元素:
take - 僅僅發(fā)出尾部的幾個元素:
takeLast - 僅僅發(fā)出第 n 個元素:
elementAt - 跳過頭幾個元素
- 跳過頭 n 個元素:
skip - 跳過頭幾個滿足判定的元素:
skipWhile,skipWhileWithIndex - 跳過某段時間內(nèi)產(chǎn)生的頭幾個元素:
skip - 跳過頭幾個元素直到另一個
Observable發(fā)出一個元素:skipUntil
- 跳過頭 n 個元素:
- 只取頭幾個元素
- 只取頭幾個滿足判定的元素:
takeWhile,takeWhileWithIndex - 只取某段時間內(nèi)產(chǎn)生的頭幾個元素:
take - 只取頭幾個元素直到另一個
Observable發(fā)出一個元素:takeUntil
- 只取頭幾個滿足判定的元素:
- 周期性的對
Observable抽樣:sample - 發(fā)出那些元素,這些元素產(chǎn)生后的特定的時間內(nèi),沒有新的元素產(chǎn)生:
debounce - 直到元素的值發(fā)生變化,才發(fā)出新的元素:
distinctUntilChanged- 并提供元素是否相等的判定函數(shù):
distinctUntilChanged
- 并提供元素是否相等的判定函數(shù):
- 在開始發(fā)出元素時,延時后進行訂閱:
delaySubscription
十二、我想要從一些Observables中,只取第一個產(chǎn)生元素的 Observable:amb
十三、我想評估Observable的全部元素
- 并且對每個元素應(yīng)用聚合方法,待所有元素都應(yīng)用聚合方法后,發(fā)出結(jié)果:reduce
- 并且對每個元素應(yīng)用聚合方法,每次應(yīng)用聚合方法后,發(fā)出結(jié)果:scan
十四、我想把 Observable 轉(zhuǎn)換為其他的數(shù)據(jù)結(jié)構(gòu):as...
- asObservable()
- asDriver()
- ...
十五、我想在某個Scheduler應(yīng)用操作符:subscribeOn
- 在某個 Scheduler 監(jiān)聽:observeOn
十六、我想要Observable發(fā)生某個事件時, 采取某個行動:do
十七、我想要Observable發(fā)出一個error事件:error
- 如果規(guī)定時間內(nèi)沒有產(chǎn)生元素:
timeout
十八、我想要Observable發(fā)生錯誤時,優(yōu)雅的恢復(fù)
- 如果規(guī)定時間內(nèi)沒有產(chǎn)生元素,就切換到備選
Observable:timeout - 如果產(chǎn)生錯誤,將錯誤替換成某個元素 :
catchErrorJustReturn - 如果產(chǎn)生錯誤,就切換到備選
Observable:catchError - 如果產(chǎn)生錯誤,就重試 :
retry
十九、我創(chuàng)建一個Disposable資源,使它與Observable具有相同的壽命:using
二十、我創(chuàng)建一個Observable,直到我通知它可以產(chǎn)生元素后,才能產(chǎn)生元素:publish
- 并且,就算是在產(chǎn)生元素后訂閱,也要發(fā)出全部元素:
replay - 并且,一旦所有觀察者取消觀察,他就被釋放掉:
refCount - 通知它可以產(chǎn)生元素了:
connect
本篇來源:RxSwift中文文檔