java obervable_RxJava中Observable,Completable和Single之间有什么区别
Observable 是通用ReactiveX構建塊,它是隨時間發送值的事件源 . (因此存在ReactiveX擴展到的每種語言)
簡而言之,Observable事件是:
onNext *(onCompleted | onError)? /(*零或更多? - 零或1)
Single和Completable是RxJava獨家推出的新類型,它們代表減少類型的 Observable ,具有更簡潔的API .
Single 表示發出單個值或錯誤的 Observable .
Completable 表示 Observable ,它不會發出任何值,但只會發出終端事件 onError 或 onCompleted
你可以想到差異,比如返回的方法的差異:
對象集合 - 可觀察
單個對象 - 單個
和不返回值的方法(void方法) - 可完成 .
當你有面向任務的Observable并且你期望單個值,例如執行一次的網絡請求并返回值(或錯誤)時, Single 可能是合適的,網絡調用是一次性操作的,這意味著你不希望它返回額外的隨時間變化的 Value 另一個例子是DB獲取數據操作 .
Completable 適用于 Observable 并且你沒有't care about the value resulted from the operation, or there isn' t . 例如,更新緩存,操作可以成功/失敗,但沒有值 .
另一個例子是一些長時間運行的init操作,它不會返回任何內容 . 它可以是僅通過成功指示產生的UPDATE / PUT網絡呼叫 .
在任何情況下,Completable和Single都沒有添加新功能,但它們引入了更強大和簡潔的API,它們更多地講述了API暴露的Observable背后的操作 .
Edit:
RxJava2可能:
RxJava2添加了一個名為 Maybe 的新類型, Maybe 是 Completable 和Single的組合 .
在上面這樣的語言中, Maybe 可以被認為是一種返回某種類型的 Optional 的方法, Optional 是一個圍繞Object的包裝器,它明確告訴我們是否有一些值 - Object 或不是(而不是null) .
使用 Maybe ,我們可以擁有與 Single 完全相同的值,或者不返回任何內容 - 就像 Completable 一樣 . 另外,和兩者一樣,我們有錯誤 .
當我們想要標記 Observable 可能沒有值并且只是完成時, Maybe 很有 Value .
一個例子將從緩存中獲取,我們不一定在緩存中有一個值,所以在這種情況下,我們將完成,o.w . 我們將從緩存中獲取 onNext .
這也值得使用RxJava2處理流中的非空值 .
RxJava2 Flowable:
首先,讓我們來定義背壓 . Backpressure是一種處理數據生成速度快于處理速度的方法 . Flowable 具有背壓支持,允許下游請求物品 . 您可以閱讀有關差異的更多信息here .
總結
以上是生活随笔為你收集整理的java obervable_RxJava中Observable,Completable和Single之间有什么区别的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: python字符串类型_Python3的
- 下一篇: python深入和扩展_加速方案 — P
