天天看點

SingleSingle

Single

介紹

RxJava(以及它派生出來的RxGroovy和RxScala)中有一個名為Single的Observable變種。

Single類似于Observable,不同的是,它總是隻發射一個值,或者一個錯誤通知,而不是發射一系列的值。

是以,不同于Observable需要三個方法onNext, onError, onCompleted,訂閱Single隻需要兩個方法:

  • onSuccess - Single發射單個的值到這個方法
  • onError - 如果無法發射需要的值,Single發射一個Throwable對象到這個方法

Single隻會調用這兩個方法中的一個,而且隻會調用一次,調用了任何一個方法之後,訂閱關系終止。

Single的操作符

Single也可以組合使用多種操作,一些操作符讓你可以混合使用Observable和Single:

操作符 傳回值 說明
compose 建立一個自定義的操作符
concat and concatWith Observable 連接配接多個Single和Observable發射的資料
create 調用觀察者的create方法建立一個Single
error 傳回一個立即給訂閱者發射錯誤通知的Single
flatMap 傳回一個Single,它發射對原Single的資料執行flatMap操作後的結果
flatMapObservable 傳回一個Observable,它發射對原Single的資料執行flatMap操作後的結果
from 将Future轉換成Single
just 傳回一個發射一個指定值的Single
map 傳回一個Single,它發射對原Single的資料執行map操作後的結果
merge 将一個Single(它發射的資料是另一個Single,假設為B)轉換成另一個Single(它發射來自另一個Single(B)的資料)
merge and mergeWith 合并發射來自多個Single的資料
observeOn 訓示Single在指定的排程程式上調用訂閱者的方法
onErrorReturn 将一個發射錯誤通知的Single轉換成一個發射指定資料項的Single
subscribeOn 訓示Single在指定的排程程式上執行操作
timeout 它給原有的Single添加逾時控制,如果逾時了就發射一個錯誤通知
toSingle 将一個發射單個值的Observable轉換為一個Single
zip and zipWith 将多個Single轉換為一個,後者發射的資料是對前者應用一個函數後的結果

操作符圖示

詳細的圖解可以參考英文文檔:

繼續閱讀