Single

优质
小牛编辑
133浏览
2023-12-01

介绍

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方法创建一个Single
errorSingle返回一个立即给订阅者发射错误通知的Single
flatMapSingle返回一个Single,它发射对原Single的数据执行flatMap操作后的结果
flatMapObservableObservable返回一个Observable,它发射对原Single的数据执行flatMap操作后的结果
fromSingle将Future转换成Single
justSingle返回一个发射一个指定值的Single
mapSingle返回一个Single,它发射对原Single的数据执行map操作后的结果
mergeSingle将一个Single(它发射的数据是另一个Single,假设为B)转换成另一个Single(它发射来自另一个Single(B)的数据)
merge and mergeWithObservable合并发射来自多个Single的数据
observeOnSingle指示Single在指定的调度程序上调用订阅者的方法
onErrorReturnSingle将一个发射错误通知的Single转换成一个发射指定数据项的Single
subscribeOnSingle指示Single在指定的调度程序上执行操作
timeoutSingle它给原有的Single添加超时控制,如果超时了就发射一个错误通知
toSingleSingle将一个发射单个值的Observable转换为一个Single
zip and zipWithSingle将多个Single转换为一个,后者发射的数据是对前者应用一个函数后的结果

操作符图示

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

最后更新:

类似资料

  • http://reactivex.io/intro.html Rx介绍 ReactiveX的历史 ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx库支持.NET、JavaScrip

  • hyperf/reactive-x 组件提供了 Swoole/Hyperf 环境下的 ReactiveX 集成。 ReactiveX 的历史 ReactiveX 是 Reactive Extensions 的缩写,一般简写为 Rx,最初是 LINQ 的一个扩展,由微软的架构师 Erik Meijer 领导的团队开发,在 2012 年 11 月开源,Rx 是一个编程模型,目标是提供一致的编程接口,帮

  • RxPY 是 Reactive Extensions 的 Python 版本。

  • ReactiveX 是 Reactive Extensions 的缩写,一般简写为 Rx,最初是 LINQ 的一个扩展,由微软的架构师 Erik Meijer 领导的团队开发,在2012年11月开源,Rx 是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx库支持.NET、JavaScript和C++,Rx近几年越来越流行了,现在已经支持几乎全部的流行编程语言了,Rx的

  • 我试图使用testNG运行suite,但我遇到了一个错误:我在这个网站和web上搜索了一些关于这个问题的信息,但没有成功。 测试: 我在网上寻找答案,但没有成功。 有人能帮我解决这个问题吗?

  • 问题内容: 我是ReactiveX for Java的新手,我有以下代码块可以进行外部http调用,但它不是异步的。我们正在使用rxjava 1.2和Java 1.8 我有以下在网上找到的代码块,但我无法完全理解它,以及如何将其应用于代码库。 问题答案: 如果我对您的理解正确,则需要使用类似的方法包装现有的内容 代码的简短说明: 它计划在 对成功案例和错误案例的转换最少。它也发生在调度程序上,但是

开发工具

ReactiveX RxPY