木水川的博客


  • 首页

  • 分类

  • 归档

  • 标签

RxJava操作符(八)Aggregate

发表于 2015-12-14   |   分类于 Android   |     |   阅读次数
在这篇文章里我们来了解一下Rxjava的聚合操作符。 一、ConcatConcat操作符将多个Observable结合成一个Observable并发射数据,并且严格按照先后顺序发射数据,前一个Observable的数据没有发射完,是不能发射后面Observable的数据的。有两个操作符跟它类似,但是有区别,分别是1.startWith:仅仅是在前面插上一个数据。2.merge:其发射的数据是无序的。 二、CountCount操作符用来统计源Observable发射了多少个数据,最后将数目给发射出来;如果源Observable发射错误,则会将错误直接报出来;在源Observable没有终止前,c ...
阅读全文 »

RxJava操作符(七)Conditional and Boolean

发表于 2015-12-14   |   分类于 Android   |     |   阅读次数
在这篇文章里我们来了解一下条件和布尔操作符。 一、All/AmbAll操作符根据一个函数对源Observable发射的所有数据进行判断,最终返回的结果就是这个判断结果。这个函数使用发射的数据作为参数,内部判断所有的数据是否满足我们定义好的判断条件,如果全部都满足则返回true,否则就返回false。Amb操作符可以将至多9个Observable结合起来,让他们竞争。哪个Observable首先发射了数据(包括onError和onComplete)就会继续发射这个Observable的数据,其他的Observable所发射的数据都会别丢弃。下面使用这两个操作符,对于all操作符我们做了这样的限 ...
阅读全文 »

RxJava操作符(六)Utility

发表于 2015-12-11   |   分类于 Android   |     |   阅读次数
在这篇文章中我们来了解一些辅助操作符,可以让我们更加地方便地处理Observable。 一、Delay顾名思义,Delay操作符就是让发射数据的时机延后一段时间,这样所有的数据都会依次延后一段时间发射。在Rxjava中将其实现为Delay和DelaySubscription。不同之处在于Delay是延时数据的发射,而DelaySubscription是延时注册Subscriber。 下面我们使用Delay和DelaySubscribtion操作符来延迟两个Observable数据的发射12345678910111213141516171819202122232425262728private ...
阅读全文 »

RxJava操作符(五)Error Handling

发表于 2015-12-11   |   分类于 Android   |     |   阅读次数
我们知道Rxjava对错误的处理很方便,就是当有错误出现的时候就会调用Subscriber的onError方法将错误分发出去,由Subscriber自己来处理错误。这种处理的错误有其优点,也有其缺点,就是每个Subscriber都要来定义如何处理错误,如果由100个Subscriber就要定义100遍,如何来统一地处理这些错误呢?这时我们就可以使用Error handling相关的操作符来集中统一地处理错误。 一、CatchCatch类似于java 中的try/catch,当错误发生的时候,可以拦截对onError的调用,让Observable不会因为错误的产生而终止。在Rxjava中,将这个 ...
阅读全文 »

RxJava操作符(四)Combining

发表于 2015-12-11   |   分类于 Android   |     |   阅读次数
一、CombineLatest CombineLatest操作符可以将2~9个Observable发射的数据组装起来然后再发射出来。不过还有两个前提: 所有的Observable都发射过数据。 满足条件1的时候任何一个Observable发射一个数据,就将所有Observable最新发射的数据按照提供的函数组装起来发射出去。 Rxjava实现CombineLast操作符可以让我们直接将组装的Observable作为参数传值,也可以将所有的Observable装在一个List里面穿进去。 下面我们创建几个Observable对象,分别直接传值和使用List传值将其组装起来1234567891 ...
阅读全文 »

RxJava操作符(三)Filtering

发表于 2015-12-11   |   分类于 Android   |     |   阅读次数
在上一篇文章里,我们了解了转化操作符,能将数据转化为我们想要的格式,但是如果数据集合里面有一些我们想要过滤掉的数据怎么办?这时候我们就需要使用过滤操作符了,有点类似于sql里的where,让Observable只返回满足我们条件的数据。 一、debounce debounce操作符就是起到了限流的作用,可以理解为阀门,当你半开阀门的时候,水会以较慢的速度流出来。不同之处就是阀门里的水不会浪费掉,而debounce过滤掉的数据会被丢弃掉。在Rxjava中,将这个操作符分为了throttleWithTimeout和debounce两个操作符。先来看一下throttleWithTimeOut吧,如下 ...
阅读全文 »

RxJava操作符(二)Transforming Observables

发表于 2015-12-11   |   分类于 Android   |     |   阅读次数
在上一篇文章中,我们了解了如何创建Observable,仅仅创建一个Observable可能无法满足一些复杂的场景,所以我们很可能需要将创建的Observable安装某种规则转化一下来发射数据。在这篇文章里我们来了解一下如何来转化Observable 一、Buffer顾名思义,Buffer操作符所要做的事情就是将数据安装规定的大小做一下缓存,然后将缓存的数据作为一个集合发射出去。如下图所示,第一张示例图中我们指定buffer的大小为3,收集到3个数据后就发射出去。 第二张图中我们加入了一个skip参数用来指定每次发射一个集合需要跳过几个数据,图中如何指定count为2,skip为3,就会每3个 ...
阅读全文 »

RxJava操作符(一)Creating Observables

发表于 2015-12-11   |   分类于 Android   |     |   阅读次数
RxJava只是ReactiveX(Reactive Extensions)的一种java实现, ReactiveX是一种响应式扩展框架,有很多种实现,如RxAndroid, RxJS, RxSwift, RxRuby等等。RX采用一种类似于观察者的形式来实现各种功能,跟我们一般的写代码思路差别较大。刚开始接触可能会觉得难以理解,但是一旦掌握地话就会体会到其强大之处。其原理就是创建一个Observable对象来干活,然后使用各种操作符建立起来的链式操作,就如同流水线一样把你想要处理的数据一步一步地加工成你想要的成品然后发射(emit)给Subscriber。 RxAndroid是对RxJ ...
阅读全文 »
1…56
木水川

木水川

人生如梦

58 日志
15 分类
27 标签
github 知乎

我的ChinaUnix博客

木水川
© 2023 木水川
由 Hexo 强力驱动
主题 - NexT.Pisces