當前位置:編程學習大全網 - 編程語言 - RxJava去除抖動,防止按鈕重復點擊的操作符,有哪些

RxJava去除抖動,防止按鈕重復點擊的操作符,有哪些

ReactiveX的每種編程語言的實現都實現了壹組操作符的集合。不同的實現之間有很多重疊的部分,也有壹些操作符只存在特定的實現中。每種實現都傾向於用那種編程語言中他們熟悉的上下文中相似的方法給這些操作符命名。

本文首先會給出ReactiveX的核心操作符列表和對應的文檔鏈接,後面還有壹個決策樹用於幫助妳根據具體的場景選擇合適的操作符。最後有壹個語言特定實現的按字母排序的操作符列表。

如果妳想實現妳自己的操作符,可以參考這裏:實現自定義操作符

創建操作

用於創建Observable的操作符

Create — 通過調用觀察者的方法從頭創建壹個Observable

Defer — 在觀察者訂閱之前不創建這個Observable,為每壹個觀察者創建壹個新的Observable

Empty/Never/Throw — 創建行為受限的特殊Observable

From — 將其它的對象或數據結構轉換為Observable

Interval — 創建壹個定時發射整數序列的Observable

Just — 將對象或者對象集合轉換為壹個會發射這些對象的Observable

Range — 創建發射指定範圍的整數序列的Observable

Repeat — 創建重復發射特定的數據或數據序列的Observable

Start — 創建發射壹個函數的返回值的Observable

Timer — 創建在壹個指定的延遲之後發射單個數據的Observable

變換操作

這些操作符可用於對Observable發射的數據進行變換,詳細解釋可以看每個操作符的文檔

Buffer — 緩存,可以簡單的理解為緩存,它定期從Observable收集數據到壹個集合,然後把這些數據集合打包發射,而不是壹次發射壹個

FlatMap — 扁平映射,將Observable發射的數據變換為Observables集合,然後將這些Observable發射的數據平坦化的放進壹個單獨的Observable,可以認為是壹個將嵌套的數據結構展開的過程。

GroupBy — 分組,將原來的Observable分拆為Observable集合,將原始Observable發射的數據按Key分組,每壹個Observable發射壹組不同的數據

Map — 映射,通過對序列的每壹項都應用壹個函數變換Observable發射的數據,實質是對序列中的每壹項執行壹個函數,函數的參數就是這個數據項

Scan — 掃描,對Observable發射的每壹項數據應用壹個函數,然後按順序依次發射這些值

Window — 窗口,定期將來自Observable的數據分拆成壹些Observable窗口,然後發射這些窗口,而不是每次發射壹項。類似於Buffer,但Buffer發射的是數據,Window發射的是Observable,每壹個Observable發射原始Observable的數據的壹個子集

過濾操作

這些操作符用於從Observable發射的數據中進行選擇

Debounce — 只有在空閑了壹段時間後才發射數據,通俗的說,就是如果壹段時間沒有操作,就執行壹次操作

Distinct — 去重,過濾掉重復數據項

ElementAt — 取值,取特定位置的數據項

Filter — 過濾,過濾掉沒有通過謂詞測試的數據項,只發射通過測試的

First — 首項,只發射滿足條件的第壹條數據

IgnoreElements — 忽略所有的數據,只保留終止通知(onError或onCompleted)

Last — 末項,只發射最後壹條數據

Sample — 取樣,定期發射最新的數據,等於是數據抽樣,有的實現裏叫ThrottleFirst

Skip — 跳過前面的若幹項數據

SkipLast — 跳過後面的若幹項數據

Take — 只保留前面的若幹項數據

TakeLast — 只保留後面的若幹項數據

組合操作

組合操作符用於將多個Observable組合成壹個單壹的Observable

And/Then/When — 通過模式(And條件)和計劃(Then次序)組合兩個或多個Observable發射的數據集

CombineLatest — 當兩個Observables中的任何壹個發射了壹個數據時,通過壹個指定的函數組合每個Observable發射的最新數據(壹***兩個數據),然後發射這個函數的結果

Join — 無論何時,如果壹個Observable發射了壹個數據項,只要在另壹個Observable發射的數據項定義的時間窗口內,就將兩個Observable發射的數據合並發射

Merge — 將兩個Observable發射的數據組合並成壹個

StartWith — 在發射原來的Observable的數據序列之前,先發射壹個指定的數據序列或數據項

Switch — 將壹個發射Observable序列的Observable轉換為這樣壹個Observable:它逐個發射那些Observable最近發射的數據

Zip — 打包,使用壹個指定的函數將多個Observable發射的數據組合在壹起,然後將這個函數的結果作為單項數據發射

錯誤處理

這些操作符用於從錯誤通知中恢復

Catch — 捕獲,繼續序列操作,將錯誤替換為正常的數據,從onError通知中恢復

Retry — 重試,如果Observable發射了壹個錯誤通知,重新訂閱它,期待它正常終止

輔助操作

壹組用於處理Observable的操作符

Delay — 延遲壹段時間發射結果數據

Do — 註冊壹個動作占用壹些Observable的生命周期事件,相當於Mock某個操作

Materialize/Dematerialize — 將發射的數據和通知都當做數據發射,或者反過來

ObserveOn — 指定觀察者觀察Observable的調度程序(工作線程)

Serialize — 強制Observable按次序發射數據並且功能是有效的

Subscribe — 收到Observable發射的數據和通知後執行的操作

SubscribeOn — 指定Observable應該在哪個調度程序上執行

TimeInterval — 將壹個Observable轉換為發射兩個數據之間所耗費時間的Observable

Timeout — 添加超時機制,如果過了指定的壹段時間沒有發射數據,就發射壹個錯誤通知

Timestamp — 給Observable發射的每個數據項添加壹個時間戳

Using — 創建壹個只在Observable的生命周期內存在的壹次性資源

條件和布爾操作

這些操作符可用於單個或多個數據項,也可用於Observable

All — 判斷Observable發射的所有的數據項是否都滿足某個條件

Amb — 給定多個Observable,只讓第壹個發射數據的Observable發射全部數據

Contains — 判斷Observable是否會發射壹個指定的數據項

DefaultIfEmpty — 發射來自原始Observable的數據,如果原始Observable沒有發射數據,就發射壹個默認數據

SequenceEqual — 判斷兩個Observable是否按相同的數據序列

SkipUntil — 丟棄原始Observable發射的數據,直到第二個Observable發射了壹個數據,然後發射原始Observable的剩余數據

SkipWhile — 丟棄原始Observable發射的數據,直到壹個特定的條件為假,然後發射原始Observable剩余的數據

TakeUntil — 發射來自原始Observable的數據,直到第二個Observable發射了壹個數據或壹個通知

TakeWhile — 發射原始Observable的數據,直到壹個特定的條件為真,然後跳過剩余的數據

算術和聚合操作

這些操作符可用於整個數據序列

Average — 計算Observable發射的數據序列的平均值,然後發射這個結果

Concat — 不交錯的連接多個Observable的數據

Count — 計算Observable發射的數據個數,然後發射這個結果

Max — 計算並發射數據序列的最大值

Min — 計算並發射數據序列的最小值

Reduce — 按順序對數據序列的每壹個應用某個函數,然後返回這個值

Sum — 計算並發射數據序列的和

連接操作

壹些有精確可控的訂閱行為的特殊Observable

Connect — 指示壹個可連接的Observable開始發射數據給訂閱者

Publish — 將壹個普通的Observable轉換為可連接的

RefCount — 使壹個可連接的Observable表現得像壹個普通的Observable

Replay — 確保所有的觀察者收到同樣的數據序列,即使他們在Observable開始發射數據之後才訂閱

轉換操作

To — 將Observable轉換為其它的對象或數據結構

Blocking 阻塞Observable的操作符

操作符決策樹

幾種主要的需求

直接創建壹個Observable(創建操作)

組合多個Observable(組合操作)

對Observable發射的數據執行變換操作(變換操作)

從Observable發射的數據中取特定的值(過濾操作)

轉發Observable的部分值(條件/布爾/過濾操作)

對Observable發射的數據序列求值(算術/聚合操作)

  • 上一篇:小學生元旦節主題班會
  • 下一篇:用C語言語句編寫的程序在C語言中稱為()。
  • copyright 2024編程學習大全網