observable java_RxJava之Observables类型理解
image
参考原文1:
Observable — Operator — Observer
Observable就像一个发声的扬声器。它会执行一些任务并发射(emit)一些值。
Operator就像一个翻译机,将数据从一种形式翻译或者修改为另一种形式。
Observer获得这些值。
image
RxJava中的Observables类型
以下即为RxJava中不同的Observables类型
Observable
Flowable
Single
Maybe
Completable
既然有不同的Observables类型,随之也有不同的Observers类型。如下:
Obeserver
SingleObserver
MaybeObserver
CompletableObserver
现在就让我们来看看他们之间的区别和如何选择。
Observable <> Observer
此为最简单的Observable,可以发射不止一个值。
举个栗子:比方说你正在下载一个文件,报告当前的下载进度。此时将会发射不止一个值。
创建一个简单的Observable
image
对应的Observer
image
Flowable <> Observer
Flowable 用于当Obserable发射很多的值时而Observer消费不过来的时候。
这种情况下,Observable需要基于某种策略忽略一些值,否则将会抛出异常。
Flowable Observable会通过某种策略来处理异常。
这个策略为BackPressureStrategy,异常为MissingBackPressureException
创建一个Flowable Observable
与创建一个普通的Observable类似,你可以使用Flowable.create()来创建一个Flowable。
对应Flowable Observable的Observer
与普通的Observer基本一样。
Single <> SingleObserver
SIngle用于当Observable只需要发射一次值,比如网络请求的响应的时候。
创建一个Single Observable
image
对应Single Observable的SingleObserver
image
Maybe <> MaybeObserver
Maybe 用于当Observable发射一个值或没有值的时候。
创建一个 Maybe Observable
image
对应Maybe Observable的MaybeObserver
image
Completable <> CompletableObserver
Completable 用于Observable完成某个任务而不发射任何值得时候。
创建一个 Completable Observable
image
对应Completable Observable的CompletableObserver
image
好啦,现在你该知道如何根据你的场景来选择哪一个Observable啦吧。
RxJava是关于Reactive Extensions的java 虚拟机实现,它已成为Android开发的一项最重要的技能。
翻译自Understanding Types Of Observables In RxJava
observable java_RxJava之Observables类型理解相关推荐
- observable java_RxJava学习笔记(1)创建Observable
RxJava文档:https://github.com/ReactiveX/RxJava/wiki RxJava中文文档:https://mcxiaoke.gitbooks.io/rxdocs/con ...
- Typescript 下 Mongoose 外键类型外键数组类型定义类型保护联合类型理解
最近给项目上Typescript,记录在迁移的过程中遇到的一个问题. 问题背景 下面这段代码 定义了一个User 接口, Company接口, Order接口以及相应的mongoose model. ...
- Java之协变返回类型理解和简单实例
开心一笑 [早上起来,发现天气越来越冷了,白粽子记得要多包几层叶] 视频教程 大家好,我录制的视频<Java之优雅编程之道>已经在CSDN学院发布了,有兴趣的同学可以购买观看,相信大家一定 ...
- 从自定义string类型理解右值引用
理解右值引用 前言 问题复现 自定义string(CMyString) 遇到问题 图示理解 右值引用 什么是右值 添加右值引用参数的成员方法 结果对比 解决遗留问题 前言 在之前,我写过一篇: 通过自 ...
- ARM各种Memory类型理解
读书笔记,源自谷公子 https://blog.csdn.net/W1Z1Q/article/details/104358385 在看ARM的各个文档时,经常出现很多memory属性相关的词汇,比如D ...
- mysql characterencoding 枚举值_mysql中enum类型理解,读完之后,大部分程序员收藏了......
ENUM是枚举类型,它虽然只能保存一个值,却能够处理多达65535个预定义的值.下面是我写的一个mysql语句 CREATE TABLE student(id INT(11) PRIMARY key ...
- 基本类型理解巩固及补码原理总结
引言 本篇文章属于计算机基础通识,主要讨论:有符号类型.无符号类型的区别,byte.int 等类型的取值范围,最大值最小值的计算公式的由来,原码.反码.补码转换公式. 有符号类型与无符号类型 在 Ja ...
- 指针类型与指针指向类型理解
今天在看一些C语言面试题时,遇到这样一个题目: #include<studio.h>int main(){unsigned int a = 0xFFFFFFF7;unsigned char ...
- $.ajax datatype默认是什么类型,理解jquery ajax中的datatype属性选项值
jquery中ajax的dataType属性用于指定服务器返回的数据类型,如果不指定,jQuery 将自动根据HTTP包MIME信息来智能判断,如果datatype选项不填写的话,会将返回的数据当成字 ...
- 面试官:说说对observable的理解
一.Observable 是什么 Observable 翻译过来我们可以理解成可观察的 我们先来看一下其在Vue中的定义 Vue.observable,让一个对象变成响应式数据.Vue 内部会用它来处 ...
最新文章
- Spring学习(23)--- AOP之Introductions应用
- 用计算机做科学实验评课,科学小实验课程听课心得
- CTO在企业技术创新中的作用和地位
- 第13天学习Java的笔记(类定义)
- iOS消息推送整体流程
- 运算符sizeof_C程序通过使用sizeof()运算符对数组元素进行计数
- 我们学过 飞鸽传书 的应该知道
- 对《RHCSA/RHCE Red Hat Linux认证学习指南(第6版):EX200 EX300》的评价
- Web.xml详解(转)
- C++重载->和*运算符
- java consumer.poll_java – 无法在kafka consumer下设置’max.poll.records’,其中cons.poll仍然返回分区下的所有记录...
- 深入理解Flink ---- 系统内部消息传递的exactly once语义
- 郑州大学校园网使用指南
- java sql拼接字符串_java字符串拼接(SQL)
- 完美解决Tensorflow不支持AVX2指令集问题|指令集加速
- 软件系统架构~思维导图
- uniapp实现打印PDF文件
- 【其他】VirtualBox压缩磁盘占用空间
- vmware 文件夹共享
- 数据开发者启示录:《我,阿里P7,找不到工作》
热门文章
- 【语音分析】基于matlab语音线谱对转换【含Matlab源码 560期】
- 【电路仿真】基于matlab simulink三相半波可控整流电路【含Matlab源码 331期】
- 【物理应用】基于matlab GUI功率谱估计【含Matlab源码 329期】
- 立法者在民权受到侵蚀时忽略了黑匣子算法
- 树莓派开发界面显示温度_关于树莓派linux开发板
- java创建集合有的不用泛型_Java如何创建泛型集合?
- 浙江省高考计算机重点知识,2017届浙江省新高考信息技术考试标准
- C++ map, 运用map统计单词出现的次数
- 【快学springboot】使用springboot发送邮件
- SpringBoot整合Scala构建Web服务