RxJava
请叫我东子
一个拥有7年开发经验的java老兵。主要关注的技术方向为分布式技术、微服务、大数据、IOT、云原生、分布式事务、数据中台、领域驱动设计等相关技术。
展开
-
ReactiveX
ReactiveX http://reactivex.io/intro.htmlRx介绍ReactiveX的历史ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx库支持.NET、转载 2016-03-21 08:27:41 · 4824 阅读 · 1 评论 -
Filtering 过滤操作
filter( ) — 过滤数据takeLast( ) — 只发射最后的N项数据last( ) — 只发射最后的一项数据lastOrDefault( ) — 只发射最后的一项数据,如果Observable为空就发射默认值takeLastBuffer( ) — 将最后的N项数据当做单个数据发射skip( ) — 跳过开始的N项数据skipLast( ) — 跳过最后的N项数据take(转载 2016-03-21 08:54:35 · 834 阅读 · 0 评论 -
Combining 结合操作
startWith( ) — 在数据序列的开头增加一项数据merge( ) — 将多个Observable合并为一个mergeDelayError( ) — 合并多个Observables,让没有错误的Observable都完成后再发射错误通知zip( ) — 使用一个函数组合多个Observable发射的数据集合,然后再发射这个结果and( ), then( ), and when( )转载 2016-03-21 08:56:22 · 575 阅读 · 0 评论 -
Error Handling 错误处理
很多操作符可用于对Observable发射的onError通知做出响应或者从错误中恢复,例如,你可以:吞掉这个错误,切换到一个备用的Observable继续发射数据吞掉这个错误然后发射默认值吞掉这个错误并立即尝试重启这个Observable吞掉这个错误,在一些回退间隔后重启这个Observable这是操作符列表:onErrorResumeNext( ) — 指示Observable在遇到转载 2016-03-21 09:05:44 · 2355 阅读 · 0 评论 -
Mathematical 算术和聚合操作
本页展示的操作符用于对整个序列执行算法操作或其它操作,由于这些操作必须等待数据发射完成(通常也必须缓存这些数据),它们对于非常长或者无限的序列来说是危险的,不推荐使用。rxjava-math 模块的操作符averageInteger( ) — 求序列平均数并发射averageLong( ) — 求序列平均数并发射averageFloat( ) — 求序列平均数并发射averageDouble转载 2016-03-21 09:35:20 · 583 阅读 · 0 评论 -
Conditional 条件和布尔操作
这个页面的操作符可用于根据条件发射或变换Observables,或者对它们做布尔运算:条件操作符amb( ) — 给定多个Observable,只让第一个发射数据的Observable发射全部数据defaultIfEmpty( ) — 发射来自原始Observable的数据,如果原始Observable没有发射数据,就发射一个默认数据(rxjava-computation-expression转载 2016-03-21 09:34:33 · 728 阅读 · 0 评论 -
String操作符
StringObservable 类包含一些用于处理字符串序列和流的特殊操作符,如下:byLine( ) — 将一个字符串的Observable转换为一个行序列的Observable,这个Observable将原来的序列当做流处理,然后按换行符分割decode( ) — 将一个多字节的字符流转换为一个Observable,它按字符边界发射字节数组encode( ) — 对一个发射字符串的Obs转载 2016-03-21 09:43:46 · 599 阅读 · 0 评论 -
Connect 连接操作
这一节解释ConnectableObservable 和它的子类以及它们的操作符:ConnectableObservable.connect( ) — 指示一个可连接的Observable开始发射数据Observable.publish( ) — 将一个Observable转换为一个可连接的ObservableObservable.replay( ) — 确保所有的订阅者看到相同的数据序列,即转载 2016-03-21 09:37:00 · 1365 阅读 · 0 评论 -
Async 异步操作
下面的这些操作符属于单独的rxjava-async模块,它们用于将同步对象转换为Observable。start( ) — 创建一个Observable,它发射一个函数的返回值toAsync( ) or asyncAction( ) or asyncFunc( ) — 将一个函数或者Action转换为已Observable,它执行这个函数并发射函数的返回值startFuture( ) — 将一转载 2016-03-21 09:36:00 · 592 阅读 · 0 评论 -
Transforming 变换操作
map( ) — 对序列的每一项都应用一个函数来变换Observable发射的数据序列flatMap( ), concatMap( ), and flatMapIterable( ) — 将Observable发射的数据集合变换为Observables集合,然后将这些Observable发射的数据平坦化的放进一个单独的ObservableswitchMap( ) — 将Observable发射的转载 2016-03-21 08:53:40 · 609 阅读 · 0 评论 -
Creating-Observables
这个页面展示了创建Observable的各种方法。just( ) — 将一个或多个对象转换成发射这个或这些对象的一个Observablefrom( ) — 将一个Iterable, 一个Future, 或者一个数组转换成一个Observablerepeat( ) — 创建一个重复发射指定数据或数据序列的ObservablerepeatWhen( ) — 创建一个重复发射指定数据或数据序列的O转载 2016-03-21 08:35:01 · 452 阅读 · 0 评论 -
全部操作符列表
按字母顺序排列的全部操作符列表aggregate( ) — see reduce( )all( ) — determine whether all items emitted by an Observable meet some criteriaamb( ) — given two or more source Observables, emits all of the items from转载 2016-03-21 08:32:57 · 833 阅读 · 0 评论 -
Single
Single介绍RxJava(以及它派生出来的RxGroovy和RxScala)中有一个名为Single的Observable变种。Single类似于Observable,不同的是,它总是只发射一个值,或者一个错误通知,而不是发射一系列的值。因此,不同于Observable需要三个方法onNext, onError, onCompleted,订阅Single只需要两个方法:onSuccess -转载 2016-03-21 08:30:15 · 895 阅读 · 0 评论 -
Subject
SubjectSubject可以看成是一个桥梁或者代理,在某些ReactiveX实现中(如RxJava),它同时充当了Observer和Observable的角色。因为它是一个Observer,它可以订阅一个或多个Observable;又因为它是一个Observable,它可以转发它收到(Observe)的数据,也可以发射新的数据。由于一个Subject订阅一个Observable,它可以触发这个O转载 2016-03-21 08:31:40 · 727 阅读 · 0 评论 -
调度器 Scheduler
调度器 Scheduler如果你想给Observable操作符链添加多线程功能,你可以指定操作符(或者特定的Observable)在特定的调度器(Scheduler)上执行。某些ReactiveX的Observable操作符有一些变体,它们可以接受一个Scheduler参数。这个参数指定操作符将它们的部分或全部任务放在一个特定的调度器上执行。使用ObserveOn和SubscribeOn操作符,你可转载 2016-03-21 08:32:21 · 1226 阅读 · 0 评论 -
操作符分类
操作符分类ReactiveX的每种编程语言的实现都实现了一组操作符的集合。不同的实现之间有很多重叠的部分,也有一些操作符只存在特定的实现中。每种实现都倾向于用那种编程语言中他们熟悉的上下文中相似的方法给这些操作符命名。本文首先会给出ReactiveX的核心操作符列表和对应的文档链接,后面还有一个决策树用于帮助你根据具体的场景选择合适的操作符。最后有一个语言特定实现的按字母排序的操作符列表。如果你想实转载 2016-03-21 08:33:53 · 442 阅读 · 0 评论 -
RxJava入门指南
RxJava是 ReactiveX 在JVM上的一个实现,ReactiveX使用Observable序列组合异步和基于事件的程序。更多关于ReactiveX的资料,可以查看 ReactiveX 介绍 页面。RxJava介绍RxJava 是轻量级的RxJava尽力做到非常轻巧。它仅关注Observable的抽象和与之相关的高层函数,实现为一个单独的JAR文件。RxJava 是一个多语言实现RxJava转载 2016-03-21 09:46:17 · 2583 阅读 · 0 评论 -
RxJava例子
第一个例子你可以在这里找到JVM平台几种语言的例子 language adaptor:RxGroovy 示例RxClojure 示例RxScala 示例下面的示例从一个字符串列表创建一个Observable,然后使用一个方法订阅这个Observable。Javapublic static void hello(String... names) { Observable.from(na转载 2016-03-21 09:48:24 · 2553 阅读 · 0 评论 -
Observable
Observable概述在ReactiveX中,一个观察者(Observer)订阅一个可观察对象(Observable)。观察者对Observable发射的数据或数据序列作出响应。这种模式可以极大地简化并发操作,因为它创建了一个处于待命状态的观察者哨兵,在未来某个时刻响应Observable的通知,不需要阻塞等待Observable发射数据。这篇文章会解释什么是响应式编程模式(reactive pa转载 2016-03-21 08:29:24 · 2610 阅读 · 1 评论 -
RxJava----Utility 辅助操作
这个页面列出了很多用于Observable的辅助操作符materialize( ) — 将Observable转换成一个通知列表convert an Observable into a list of Notificationsdematerialize( ) — 将上面的结果逆转回一个Observabletimestamp( ) — 给Observable发射的每个数据项添加一个时间戳se转载 2016-03-21 09:33:20 · 2520 阅读 · 0 评论 -
使用Spring Boot和RxJava的构建响应式REST API
我不打算解释什么是响应式编程,也不解释为什么要使用它。我希望你已经在其他地方了解过,如果没有,你可以使用Google去搜索它。在本文中,我将告诉您如何使用专门针对Spring Boot和RxJava的响应式编程。让我们开始吧。1.预备知识在你继续阅读之前,我希望你能理解如何使用Spring Boot和RxJava创建简单的REST API。如果不能,你可以在Baeldung上了解更多关于Sp...原创 2019-09-06 15:07:23 · 3506 阅读 · 0 评论