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轉換為一個,後者發射的資料是對前者應用一個函數後的結果 |
操作符圖示
詳細的圖解可以參考英文文檔: