【程序系列翻譯】ReactiveX

ReactiveX系列

ReactiveX 是http://reactivex.io提供的響應式框架,採用觀察者模式+鏈式api構成,目前支持語言如下:

【程序系列翻譯】ReactiveX - Operators

ReactiveX系列翻譯,僅翻譯通用篇,共計5篇內容:

  1. Observable
  2. Operators
  3. Single
  4. Subject
  5. Scheduler

只有理解了這五大內容,學習起來才會有目標和場景。以後不管你去使用RxJava,還是RxSwift,中心思想不會跳出這些內容。

本文是第二篇:操作符

簡述了常用的操作符的作用

正文


【程序系列翻譯】ReactiveX - Operators


在ReactiveX的不同語言實現中,都會提供一系列操作符。儘管大部分操作符,每種語言都實現了,但是還是有少部分是某種語言特有的。因此。每種語言在操作符命名上都是根據語言本身類似的操作符名稱。

  1. 鏈式操作符:大多數運算符都在Observable上運行並返回一個Observable。這樣使得你可以採用鏈式調用把這些操作符穿起來。在一個鏈中,鏈中的每個運算符都會修改由前一個運算符的運算產生的Observable。當然,還有其他模式,比如Builder模式,在Builder模式中,鏈的操作符順序就沒有那麼重要了。
  2. ReactiveX操作符:本文將為你列舉ReactiveX中的核心操作符以及他們的詳細介紹鏈接。並且提供一個決策樹,幫你在實際中選擇使用那些操作符。最後,在ReactiveX的許多特定於語言的實現中,有一個按字母順序排列的大多數運算符列表。

【程序系列翻譯】ReactiveX - Operators


  • 一、新建Observable:

發起新Observables的運營商。
  1. Create:創建一個新的Observable
  2. Defer:在觀察者訂閱之前不要創建Observable,併為每個觀察者創建一個新的Observable
  3. Empty/Never/Throw :創建具有非常精確和有限行為的Observable
  4. From:將一些其他對象或數據結構轉換為Observable
  5. Interval:創建一個Observable,它發出一個由特定時間間隔隔開的整數序列
  6. Just:將對象或一組對象轉換為發出該對象或那些對象的Observable
  7. Range:創建一個發出一系列連續整數的Observable
  8. Repeat:創建一個Observable,重複發出特定項目或項目序列
  9. Start:創建一個發出函數返回值的Observable
  10. Timer:創建一個在給定延遲後發出單個項目的Observable

  • 二、轉換Observable:

轉換Observable發出的項的運算符。
  1. Buffer:定期將Observable中的項目收集到捆綁包中併發出這些捆綁包,而不是一次發送一個項目
  2. FlatMap:將Observable發出的項目轉換為Observables,然後將這些項目的排放量變為單個Observable
  3. GroupBy:將Observable劃分為一組Observable,每個Observable從原始Observable發出不同的項目組,按鍵組織
  4. Map:通過將函數應用於每個項目來轉換Observable發出的項目
  5. Scan:將函數應用於Observable發出的每個項目,按順序,併發出每個連續的值
  6. Window:定期將Observable中的項目細分為Observable窗口併發出這些窗口,而不是一次發出一個項目

  • 三、過濾Observable:

有選擇地從源Observable中發出項的運算符。
  1. Debounce:如果特定的時間跨度已經過去而沒有發出另一個項目,則只從Observable中發出一個項目
  2. Distinct:抑制Observable發出的重複項
  3. ElementAt:僅發出Observable發出的項目n
  4. Filter:僅發出通過特定條件的Observable中的那些項
  5. First:從Observable中僅發出第一個項目或滿足條件的第一個項目
  6. IgnoreElements:不從Observable中發出任何項目,但鏡像其終止通知
  7. Last:僅發出Observable發出的最後一項
  8. Sample:在週期性時間間隔內發出Observable發出的最新項目
  9. Skip:抑制Observable發出的前n個項目
  10. SkipLast:抑制Observable發出的最後n個項目
  11. Take:
    僅發出Observable發出的前n個項目
  12. TakeLast:僅發出Observable發出的最後n個項目

  • 四、合併Observable:

使用多個源Observable創建單個Observable的運算符
  1. And/Then/When:通過模式和計劃中介組合兩個或多個Observable發出的項目集
  2. CombineLatest:當一個項目由兩個Observable中的任何一個發出時,通過指定的函數組合每個Observable發出的最新項目,並根據此函數的結果發出項目
  3. Join:在根據另一個Observable發出的項目定義的時間窗口期間發出一個Observable中的項目時,組合兩個Observable發出的項目
  4. Merge:通過合併它們的排放,將多個Observable組合成一個
  5. StartWith:在開始從源Observable中發出項之前,發出指定的項序列
  6. Switch:將發出Observables的Observable轉換為單個Observable,該Observable發出最近發出的Observables發出的項目
  7. Zip:通過指定的功能將多個Observable的排放組合在一起,並根據此功能的結果為每個組合發出單個項目

  • 五、錯誤處理:

有助於從Observable中恢復錯誤通知的操作員
  1. Catch:通過繼續序列而不出錯來從onError通知中恢復
  2. Retry:如果源Observable發送onError通知,則重新訂閱它,希望它能完成而不會出錯

  • 六、常用工具:

用於處理Observable的有用運算符的工具箱
  1. Delay:將Observable的排放量及時轉移一定量
  2. Do:註冊一個動作來承擔各種Observable生命週期事件
  3. Materialize/Dematerialize:表示發出的項目和作為發出項目發送的通知,或者反轉此過程
  4. ObserveOn:指定觀察者將觀察此Observable的調度程序
  5. Serialize:強制Observable進行序列化調用並保持良好狀態
  6. Subscribe:對觀察者的排放和通知進行操作
  7. SubscribeOn:
    指定Observable在訂閱時應使用的調度程序
  8. TimeInterval:將發射物品的Observable轉換為發出這些發射之間經過的時間量的指示的Observable
  9. Timeout:鏡像源Observable,但是如果在沒有任何發出的項目的情況下經過了特定的時間段,則發出錯誤通知
  10. Timestamp:將時間戳附加到Observable發出的每個項目
  11. Using:創建一個與Observable具有相同生命週期的可支配資源

  • 七、條件Observable:

評估Observables發出的一個或多個Observable或項目的運算符
  1. All:確定Observable發出的所有項目是否符合某些標準
  2. Amb:給定兩個或多個源Observable,僅從第一個Observable中發出所有項目以發出項目
  3. Contains:確定Observable是否發出特定項目
  4. DefaultIfEmpty:從源Observable發出項目,如果源Observable不發出任何內容,則發出默認項目
  5. SequenceEqual:確定兩個Observable是否發出相同的項目序列
  6. SkipUntil:丟棄Observable發出的項目,直到第二個Observable發出項目為止
  7. SkipWhile:丟棄Observable發出的項目,直到指定的條件變為false
  8. TakeUntil:在第二個Observable發出項目或終止後,丟棄Observable發出的項目
  9. TakeWhile:在指定條件變為false後丟棄Observable發出的項目

  • 八、數學運算:

操作Observable發出的整個項目序列的運算符
  1. Average: 計算Observable發出的數字的平均值併發出此平均值
  2. Concat:從兩個或多個Observable發射發射而不交錯
  3. Count:計算源Observable發出的項目數,並僅發出此值
  4. Max:確定併發出Observable發出的最大值項
  5. Min:確定併發出Observable發出的最小值項
  6. Reduce:按順序將一個函數應用於Observable發出的每個項目,併發出最終值
  7. Sum:計算Observable發出的數字之和併發出此總和

  • 九、背壓:

處理Observables的策略比觀察者消耗它們更快


  • 十、連接:

具有更精確控制的訂閱動態的特殊觀察者
  1. Connect:指示可連接的Observable開始向其訂戶發送項目
  2. Publish:將普通的Observable轉換為可連接的Observable
  3. RefCount:使Connectable Observable的行為類似於普通的Observable
  4. Replay:確保所有觀察者都看到相同的發射物品序列,即使他們在Observable開始發射物品後訂閱

  • 十一、轉化:

  1. To:將Observable轉換為另一個對象或數據結構
【程序系列翻譯】ReactiveX - Operators

此樹可以幫助您找到您正在尋找的ReactiveX Observable運算符

(由於排版問題,暫時不發佈)

【程序系列翻譯】ReactiveX - Operators

【程序系列翻譯】ReactiveX - Operators

【程序系列翻譯】ReactiveX - Operators

【程序系列翻譯】ReactiveX - Operators

【程序系列翻譯】ReactiveX - Operators

【程序系列翻譯】ReactiveX - Operators

【程序系列翻譯】ReactiveX - Operators

【程序系列翻譯】ReactiveX - Operators

【程序系列翻譯】ReactiveX - Operators

【程序系列翻譯】ReactiveX - Operators

【程序系列翻譯】ReactiveX - Operators

【程序系列翻譯】ReactiveX - Operators

總結

操作符是整個ReactiveX系列最常用的功能,通過這一篇文章可以解決你大部分問題。篇幅過長,適合收藏。在你忘記怎麼使用的時候,可以翻翻,也許就找到思路了。


分享到:


相關文章: