多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > RxJava-操作符

RxJava-操作符

來源:程序員人生   發布時間:2016-07-20 09:07:20 閱讀次數:2526次

基本定義

  • Observable – 被視察者(事件源)
  • Observer – 視察者

Creating Observables(創建操作)

以下展現了創建Observable的各種方法
  • Create — 通過observer的方法創建1個新的Observable
  • Defer — 直到observer定閱的時候才會創建這個Observable,并且為每個observer創建1個Observable
  • Empty/Never/Throw — 創建行動受限特殊的Observable
    Empty — 只會發射onCompleted事件
    Never — 不會發射任事件和數據
    Throw — 只會發射onError
  • From — 將現有的1些對象集或數據結構轉換到1個Observable里,然后逐一發射
  • Interval — 返回1個Observable,它按固定的時間間隔發射1個無窮遞增的整數序列。
  • Just — 類似from,但just只是單純的把傳入對象發射出去,from會把列表中數據取出來逐一發射
  • Range — 創建1個發射指定范圍內的有序整數序列的Observable
  • Repeat — 指定當前Observable可以重復發射
  • Start — 返回1個Observable,它發射1個類似于函數聲明的返回值
  • Timer — 創建1個延時發射的Observable

Transforming Observables(變換操作)

以下是可用于對Observable發射的數據履行變換操作的各種操作符
  • Buffer — 可以理解為緩存,定期從Observable中搜集數據放進1個數據包裹,然后把這些數據打包發射,而不是1次發射1個值。
  • FlatMap — 使用1個指定的函數對原始Observable發射的每項數據履行變換操作,這個函數返回1個本身也發射數據的Observable,然后FlatMap合并這些Observables發射的數據,最后將合并后的結果當作它自己的數據序列發射。
  • GroupBy — 將原始Observable按不同的key分組拆分為1些Observables集合,key相同的數據會被同1個Observable發射。
  • Map — 將Observable發射的數據通過1個函數進行變換,然后返回1個發射這些結果的Observable。
  • Scan — 將發射的數據通過1個函數進行變換,然后將變換后的結果作為參數跟下1個發射的數據1起繼續通過那個函數變換,這樣順次連續發射得到終究結果
  • Window — 定期將來自原始Observable的數據分解為1個Observable窗口,發射這些窗口,而不是每次發射1項數據,
    Window和Buffer類似,但不是發射來自原始Observable的數據包,它發射的是Observables,這些Observables中的每個都發射原始Observable數據的1個子集,最后發射1個onCompleted通知。

Filtering Observables(過濾操作)

  • Debounce — 僅在過了1段指定的時間還沒發射數據時才發射1個數據,Debounce操作符會過濾掉發射速率過快的數據項,意思就是在指定時間內如果發射過量個數據,在最后只會發射最近的哪次數據。
  • Distinct — 過濾掉重復的數據項
  • ElementAt — 只發射第N項數據
  • Filter — 只發射過濾函數返回true的數據項
  • First — 只發射第1項(或滿足某個條件的第1項)數據
  • IgnoreElements — 不發射任何數據,只發射Observable的終止通知(onError、onCompleted),當你不關心發射數據,只關心成功與否時可使用該操作符。
  • Last — 只發射最后1項(或滿足某個條件的最后1項)數據
  • Sample — 定期發射Observable最近發射的數據項
  • Skip — 過濾Observable發射的前N項數據
  • SkipLast — 過濾Observable發射的后N項數據
  • Take — 只發射Observable發射的前面的N項數據
  • TakeLast — 只發射Observable發射的最后N項數據

Combining Observables(結合操作)

 以下操作符可用于組合多個Observables。
  • And/Then/When — 使用Pattern和Plan作為中介,將兩個或多個Observable發射的數據集合并到1起。
    And/Then/When操作符組合的行動類似于zip,但是它們使用1個中間數據結構。接受兩個或多個Observable,1次1個將它們的發射物合并到Pattern對象,然后操作那個Pattern對象,變換為1個Plan。隨后將這些Plan變換為Observable的發射物。
  • CombineLatest — 當兩個Observables中的任何1個發射了數據時,使用1個函數結合每一個Observable發射的最近數據項,并且基于這個函數的結果發射數據,多個同理。
  • Join — 任什么時候候,只要在另外一個Observable發射的數據定義的時間范圍內,這個Observable發射了1條數據,就結合兩個Observable發射的數據;換句話說,在其中1個Observable發射數據時,只要另外一個Observable發射的數據還沒過期(會有2個函數定義各自的有效時間窗口),就結合2個Observable發射的數據。
  • Merge — 可以將多個Observables的輸出合并,就好像它們是1個單個的Observable1樣。
  • StartWith — 在發射數據最前面添加發射數據項。
  • Switch — 將1個發射多個Observables的Observable轉換成另外一個單獨的Observable,后者發射最近1個被發射的Observable的發射物,意味著在最近被發射的Observable之前被發射的Observable的發射物都將被拋棄。
    通俗點講,先前發射Observables中A的發射物,切換后就開始發B的發射物了。。
  • Zip — 通過1個函數合并多個Observable數據發射項,基于這個函數結果為每一個合并項發射單個數據項。

Error Handling Operators(毛病處理)

很多操作符可用于對Observable發射的onError通知做出響應或從毛病中恢復,例如,你可以:

  1. 吞掉這個毛病,切換到1個備用的Observable繼續發射數據
  2. 吞掉這個毛病然后發射默許值
  3. 吞掉這個毛病并立即嘗試重啟這個Observable
  4. 吞掉這個毛病,在1些回退間隔后重啟這個Observable

這是操作符列表:

Catch:

  • onErrorResumeNext — 唆使Observable在遇到毛病時發射1個數據序列
  • onErrorReturn — 唆使Observable在遇到毛病時發射1個特定的數據
  • onExceptionResumeNext — instructs an Observable to continue
    emitting items after it encounters an exception (but not another
    variety of throwable)唆使Observable遇到毛病時繼續發射數據

Retry:

  • retry — 唆使Observable遇到毛病時重試
  • retryWhen — 唆使Observable遇到毛病時,將毛病傳遞給另外一個Observable來決定是不是要重新給定閱這個Observable

Observable Utility Operators(輔助操作)

  • Delay — 延遲1段指定的時間再發射來自Observable的發射物
  • Do — 相當于注冊1個跟Observable某1個生命周期相干的1個回調方法,比如doOnNext、doOnError等等。
  • Materialize — Materialize將數據項和事件通知都當作數據項封裝成Notification對象發射,Dematerialize恰好相反。
  • ObserveOn — 指定1個視察者在哪一個調度器上視察這個Observable,RxJava上調度器就是不同線程。
  • Serialize — 強迫1個Observable連續調用并保證行動正確,保證行動正確是指調用視察者的事件方法順序正確調用,由于我們的視察方法多是從不同線程異步調用的,便可能會致使行動不正確,使用serialize可以糾正。
  • Subscribe — 操作來自Observable的發射物和通知;
    Subscribe操作符是連接視察者和Observable的膠水。1個視察者要想看到Observable發射的數據項,或想要從Observable獲得毛病和完成通知,它首先必須使用這個操作符定閱那個Observable。
    Subscribe操作符的1般實現可能會接受1到3個方法(然后由視察者組合它們),或接受1個實現了包括這3個方法的接口的對象(有時叫做Observer或Subscriber):
    • onNext — 每當Observable發射了1項數據它就會調用這個方法。這個方法的參數是這個Observable發射的數據項。
    • onError — 當Observable沒法生成期待的數據或遇到其他問題時會調用此方法,參數是1個Exception或Throwable。
    • onCompleted — 如果沒有遇到任何毛病,Observable再最后會調用這個方法。
  • SubscribeOn — 指定Observable本身在哪一個調度器上履行。
  • TimeInterval — 將1個發射數據的Observable轉換為發射那些數據發射時間間隔的Observable,即新Observable只發射舊Observable相鄰2個發射物之間的發射時間間隔,第1個時間間隔為原始Observable剛開始定閱到發射第1個數據項之間的時間間隔。
  • TimeOut — 指定時長內,如果Observable還沒有發射數據,則發送1個毛病通知,多是onError,也多是切換到1個備用Observable,RxJava有幾種的實現變體。
  • TimeStamp — 給Observable發射的數據項附加1個時間戳,RxJava中的實現為timestamp,它將1個發射T類型數據的Observable轉換為1個發射類型為Timestamped的數據的Observable,每項都包括數據的原始發射時間。
  • Using — 該操作符讓你可以唆使Observable創建1個只在它的生命周期內存在的資源,當Observable終止時這個資源會被自動釋放。
    using操作符接受3個參數:

    1. 1個用戶創建1次性資源的工廠函數
    2. 1個用于創建Observable的工廠函數
    3. 1個用于釋放資源的函數

    當1個視察者定閱using返回的Observable時,using將會使用Observable工廠函數創建視察者要視察的Observable,同時使用資源工廠函數創建1個你想要創建的資源。當視察者取消定閱這個Observable時,或當視察者終止時(不管是正常終止還是因毛病而終止),using使用第3個函數釋放它創建的資源。

  • To — 將Observable轉換為另外一個對象或數據結構。
    該操作符讓你可以將Observable或Observable發射的數據序列轉換為另外一個對象或數據結構,然后返回1個發射那個對象或數據結構的Observable。

Conditional and Boolean Operators(條件和布爾操作)

以下操作符可用于根據條件發射或變換Observables,或對它們做布爾運算。
  • All — 提供1個函數判斷1個Observable的所有發射數據項是不是滿足某個條件。
  • Amb — 給定兩個或多個Observables,它只發射首先發射數據或通知的那個Observable的所有數據,拋棄其他Observable發射的數據。
  • Contains — 判定1個Observable是不是發射1個特定的值。
  • DefaultIfEmpty — 發射來自原始Observable的值,如果原始Observable沒有發射任何值,就發射1個默許值。
  • SequenceEqual — 傳遞兩個Observable給SequenceEqual操作符,它會比較兩個Observable的發射物,如果兩個序列是相同的(相同的數據,相同的順序,相同的終止狀態),它就發射true,否則發射false。
  • SkipUtil — 拋棄原始Observable發射的數據,直到第2個Observable發射了1項數據。
    SkipUntil定閱原始的Observable,但是疏忽它的發射物,直到第2個Observable發射了1項數據那1刻,它開始發射原始Observable。
  • SkipWhile — 拋棄Observable發射的數據,直到1個指定的條件不成立。
    SkipWhile定閱原始的Observable,但是疏忽它的發射物,直到你指定的某個條件變成false的那1刻,它開始發射原始Observable。
  • TakeUtil — 當第2個Observable發射了1項數據或終止時,拋棄原始Observable后面發射的任何數據。
    TakeUntil定閱并開始發射原始Observable,它還監視你提供的第2個Observable。如果第2個Observable發射了1項數據或發射了1個終止通知,TakeUntil返回的Observable會停止發射原始Observable并終止。
  • TakeWhile — 發射Observable發射的數據,直到1個指定的條件不成立。
    TakeWhile發射原始Observable,直到你指定的某個條件不成立的那1刻,它停止發射原始Observable,并終止自己的Observable。

Mathematical and Aggregate Operators(算術和聚合操作)

下面的操作符用于對全部序列履行算法操作或其它操作,由于這些操作必須等待數據發射完成(通常也必須緩存這些數據),它們對非常長或無窮的序列來講是危險的,不推薦使用。
  • Average — 計算原始Observable發射數字的平均值并發射它。
  • Concat — 不交錯的發射兩個或多個Observable的發射物,即Observable是1個1個履行發射的,第1個發射終了第2個Observable才會開始發射。
  • Count — 計算原始Observable發射物的數量,然后只發射這個值。
  • Max — 發射原始Observable的最大值。
  • Min — 發射原始Observable的最小值。
  • Reduce — 按順序對Observable發射的每項數據利用1個函數并發射終究的值。
  • Sum — 計算Observable發射的數值的和并發射這個和。

Connectable Observable Operators(連接操作)

  • Publish — 將普通的Observable轉換為可連接的Observable。
    可連接的Observable (connectable Observable)與普通的Observable差不多,不過它其實不會在被定閱時開始發射數據,而是直到使用了Connect操作符時才會開始。用這個方法,你可以等待所有的視察者都定閱了Observable以后再開始發射數據。
  • Connect — 讓1個可連接的Observable開始發射數據給定閱者。
    RxJava中connect是ConnectableObservable接口的1個方法。
  • RefCount — 讓1個可連接的Observable行動像普通的Observable。
    RefCount操作符把從1個可連接的Observable連接和斷開的進程自動化了。它操作1個可連接的Observable,返回1個普通的Observable。當第1個定閱者定閱這個Observable時,RefCount連接到下層的可連接Observable。RefCount跟蹤有多少個視察者定閱它,直到最后1個視察者完成才斷開與下層可連接Observable的連接。
  • Replay — 保證所有的視察者收到相同的數據序列,即便它們在Observable開始發射數據以后才定閱。

經常使用的操作符基本都在上面了,固然還有海量的操作符需要平時用到的時候去積累了~

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美性视频在线播放 | 亚洲成人图 | 国产乱码精品一区二区三上 | 日韩色网站 | 国产欧美日韩精品高清二区综合区 | 爽a中文字幕一区 | 亚洲日本视频在线观看 | 国内精品久久久久影院不卡 | 一级毛片一级毛片一级毛片aa | 亚洲网站在线播放 | 欧美性受xxxx黑人xyx性爽 | 欧美精品亚洲 | 欧美一区二区在线视频 | 午夜三级成人三级 | 伊人久久大香线蕉综合亚洲 | 色就色欧美综合偷拍区a | 在线观看中文字幕国产 | 图片小说亚洲 | 久久艹精品 | 久久精品国产精品亚洲 | 亚洲乱码中文 | 亚洲欧美日韩中文字幕在线一区 | 欧美日本韩国一区二区 | 久久精品视频6 | 亚洲精品久久一区毛片 | 日本道在线 | 激情欧美乱妇 | xx在线 | 好吊妞国产欧美日韩视频 | 激情视频网 | 成人在线视频网站 | 亚洲精品国产成人一区二区 | 痴汉系列aⅴ | 欧美日韩亚洲第一页 | 第一页亚洲 | 天堂亚洲国产日韩在线看 | 亚洲a级| a级片在线免费看 | 国产免费一区二区在线看 | 久草在线新首页 | 亚洲专区一区 |