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类型理解相关推荐

  1. observable java_RxJava学习笔记(1)创建Observable

    RxJava文档:https://github.com/ReactiveX/RxJava/wiki RxJava中文文档:https://mcxiaoke.gitbooks.io/rxdocs/con ...

  2. Typescript 下 Mongoose 外键类型外键数组类型定义类型保护联合类型理解

    最近给项目上Typescript,记录在迁移的过程中遇到的一个问题. 问题背景 下面这段代码 定义了一个User 接口, Company接口, Order接口以及相应的mongoose model. ...

  3. Java之协变返回类型理解和简单实例

    开心一笑 [早上起来,发现天气越来越冷了,白粽子记得要多包几层叶] 视频教程 大家好,我录制的视频<Java之优雅编程之道>已经在CSDN学院发布了,有兴趣的同学可以购买观看,相信大家一定 ...

  4. 从自定义string类型理解右值引用

    理解右值引用 前言 问题复现 自定义string(CMyString) 遇到问题 图示理解 右值引用 什么是右值 添加右值引用参数的成员方法 结果对比 解决遗留问题 前言 在之前,我写过一篇: 通过自 ...

  5. ARM各种Memory类型理解

    读书笔记,源自谷公子 https://blog.csdn.net/W1Z1Q/article/details/104358385 在看ARM的各个文档时,经常出现很多memory属性相关的词汇,比如D ...

  6. mysql characterencoding 枚举值_mysql中enum类型理解,读完之后,大部分程序员收藏了......

    ENUM是枚举类型,它虽然只能保存一个值,却能够处理多达65535个预定义的值.下面是我写的一个mysql语句 CREATE TABLE student(id INT(11) PRIMARY key ...

  7. 基本类型理解巩固及补码原理总结

    引言 本篇文章属于计算机基础通识,主要讨论:有符号类型.无符号类型的区别,byte.int 等类型的取值范围,最大值最小值的计算公式的由来,原码.反码.补码转换公式. 有符号类型与无符号类型 在 Ja ...

  8. 指针类型与指针指向类型理解

    今天在看一些C语言面试题时,遇到这样一个题目: #include<studio.h>int main(){unsigned int a = 0xFFFFFFF7;unsigned char ...

  9. $.ajax datatype默认是什么类型,理解jquery ajax中的datatype属性选项值

    jquery中ajax的dataType属性用于指定服务器返回的数据类型,如果不指定,jQuery 将自动根据HTTP包MIME信息来智能判断,如果datatype选项不填写的话,会将返回的数据当成字 ...

  10. 面试官:说说对observable的理解

    一.Observable 是什么 Observable 翻译过来我们可以理解成可观察的 我们先来看一下其在Vue中的定义 Vue.observable,让一个对象变成响应式数据.Vue 内部会用它来处 ...

最新文章

  1. Spring学习(23)--- AOP之Introductions应用
  2. 用计算机做科学实验评课,科学小实验课程听课心得
  3. CTO在企业技术创新中的作用和地位
  4. 第13天学习Java的笔记(类定义)
  5. iOS消息推送整体流程
  6. 运算符sizeof_C程序通过使用sizeof()运算符对数组元素进行计数
  7. 我们学过 飞鸽传书 的应该知道
  8. 对《RHCSA/RHCE Red Hat Linux认证学习指南(第6版):EX200 EX300》的评价
  9. Web.xml详解(转)
  10. C++重载->和*运算符
  11. java consumer.poll_java – 无法在kafka consumer下设置’max.poll.records’,其中cons.poll仍然返回分区下的所有记录...
  12. 深入理解Flink ---- 系统内部消息传递的exactly once语义
  13. 郑州大学校园网使用指南
  14. java sql拼接字符串_java字符串拼接(SQL)
  15. 完美解决Tensorflow不支持AVX2指令集问题|指令集加速
  16. 软件系统架构~思维导图
  17. uniapp实现打印PDF文件
  18. 【其他】VirtualBox压缩磁盘占用空间
  19. vmware 文件夹共享
  20. 数据开发者启示录:《我,阿里P7,找不到工作》

热门文章

  1. 【语音分析】基于matlab语音线谱对转换【含Matlab源码 560期】
  2. 【电路仿真】基于matlab simulink三相半波可控整流电路【含Matlab源码 331期】
  3. 【物理应用】基于matlab GUI功率谱估计【含Matlab源码 329期】
  4. 立法者在民权受到侵蚀时忽略了黑匣子算法
  5. 树莓派开发界面显示温度_关于树莓派linux开发板
  6. java创建集合有的不用泛型_Java如何创建泛型集合?
  7. 浙江省高考计算机重点知识,2017届浙江省新高考信息技术考试标准
  8. C++ map, 运用map统计单词出现的次数
  9. 【快学springboot】使用springboot发送邮件
  10. SpringBoot整合Scala构建Web服务