Rxjava2教程:Single、Completable、Maybe——簡化版的Observable

在Rxjava2中,Observale和Flowable都是用來發射數據流的,可是,咱們在實際應用中,不少時候,須要發射的數據並非數據流的形式,而只是一條單一的數據,或者一條完成通知,或者一條錯誤通知。在這種狀況下,咱們再使用Observable或者Flowable就顯得有點大材小用,因而,爲了知足這種單一數據或通知的使用場景,便出現了Observable的簡化版——Single、Completable、Maybe。java

Single
只發射一條單一的數據,或者一條異常通知,不能發射完成通知,其中數據與通知只能發射一個。react

Completable
只發射一條完成通知,或者一條異常通知,不能發射數據,其中完成通知與異常通知只能發射一個spa

Maybe
可發射一條單一的數據,以及發射一條完成通知,或者一條異常通知,其中完成通知和異常通知只能發射一個,發射數據只能在發射完成通知或者異常通知以前,不然發射數據無效。server

示例一:Single發射單一數據對象

clipboard.png

示例二:Single發射異常通知接口

clipboard.png

SingleEmitter:Single的發射器
可觀察對象Single的發射器接口SingleEmitter中,ip

一、方法void onSuccess(T t)用來發射一條單一的數據,且一次訂閱只能調用一次,不一樣於Observale的發射器ObservableEmitter中的void onNext(@NonNull T value)方法,在一次訂閱中,能夠屢次調用屢次發射。
二、方法void onError(Throwable t)等同於ObservableEmitter中的void onError(@NonNull Throwable error)用來發射一條錯誤通知
三、SingleEmitter中沒有用來發射完成通知的void onComplete()方法。
方法onSuccess與onError只可調用一個,若先調用onError則會致使onSuccess無效,若先調用onSuccess,則會拋出io.reactivex.exceptions.UndeliverableException異常。it

SingleObserver:Single觀察者
可觀察對象Single對應的觀察者爲SingleObserver
方法void onSubscribe(Disposable d)等同於Observer中的void onSubscribe(Disposable d)。
方法void onSuccess(T t)相似於Observer中的onNext(T t)用來接收Single發的數據。
方法void onError(Throwable e)等同於Observer中的void onError(Throwable e)用來處理異常通知。
沒有用來處理完成通知的方法void onComplete()io

示例三:Completable發射完成通知table

clipboard.png

示例四:Completable發射異常通知

clipboard.png

相關文章
相關標籤/搜索