3.Single - 一种特殊的只发射单个值的Observable

来源:互联网 发布:淘宝网店铺招牌图片 编辑:程序博客网 时间:2024/04/25 17:57

Single

介绍

RxJava(以及它派生出来的RxGroovy和RxScala)中有一个名为Single的Observable变种。

Single类似于Observable,不同的是,它总是只发射一个值,或者一个错误通知,而不是发射一系列的值。

因此,不同于Observable需要三个方法onNext, onError, onCompleted,订阅Single只需要两个方法:

  • onSuccess - Single发射单个的值到这个方法
  • onError - 如果无法发射需要的值,Single发射一个Throwable对象到这个方法

Single只会调用这两个方法中的一个,而且只会调用一次,调用了任何一个方法之后,订阅关系终止。

Single的操作符

Single也可以组合使用多种操作,一些操作符让你可以混合使用Observable和Single:

操作符返回值说明composeSingle创建一个自定义的操作符concat and concatWithObservable连接多个Single和Observable发射的数据createSingle调用观察者的create方法创建一个SingleerrorSingle返回一个立即给订阅者发射错误通知的SingleflatMapSingle返回一个Single,它发射对原Single的数据执行flatMap操作后的结果flatMapObservableObservable返回一个Observable,它发射对原Single的数据执行flatMap操作后的结果fromSingle将Future转换成SinglejustSingle返回一个发射一个指定值的SinglemapSingle返回一个Single,它发射对原Single的数据执行map操作后的结果mergeSingle将一个Single(它发射的数据是另一个Single,假设为B)转换成另一个Single(它发射来自另一个Single(B)的数据)merge and mergeWithObservable合并发射来自多个Single的数据observeOnSingle指示Single在指定的调度程序上调用订阅者的方法onErrorReturnSingle将一个发射错误通知的Single转换成一个发射指定数据项的SinglesubscribeOnSingle指示Single在指定的调度程序上执行操作timeoutSingle它给原有的Single添加超时控制,如果超时了就发射一个错误通知toSingleSingle将一个发射单个值的Observable转换为一个Singlezip and zipWithSingle将多个Single转换为一个,后者发射的数据是对前者应用一个函数后的结果

操作符图示

详细的图解可以参考英文文档:Single

0 0
原创粉丝点击