您的位置:首页 > 编程语言 > Java开发

RxJava的操作符

2016-05-20 19:00 323 查看
RxJava最核心的两个东西是Observerables(被观察者,事件源)和Subscribers(观察者)。Observable发出一系列

事件,Subscribeers处理这些事件。这里的事件可以是触摸事件,web接口调用返回的数据。

一个Observable可以发出零个或多个事件,知道结束或者出错。每发出一个事件,就会调用它的Subscribe的

onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束。

RxJava很像设计模式中的观察者设计模式,但是有一点明显不同,那就是如果一个Onserable没有任何的

Subscriber,那么这个Observerable是不会发出任何事件的。

1.Observable和Subscribe可以做任何事情

Observable可以是数据库查询,Subscriber用来显示查询结果;Observable可以是屏幕上的点击事件,

Subscriber用啦响应点击事件;Observable可以是一个网络请求,Subcribler来显示请求结果。

2.Observable和Subscribler是独立于中间的变换过程的。

在Obseravable和Subscriber中间可以增减任何数量的map。整个系统是高度可组合的,操作数据是一个很简单的

过程。


RxJava中的操作符:

操作符是为了解决对Observable对象的变换问题,操作符用于在Observable和最终的Subscribe之间修改

Observable发出的事件。

map()操作符就是用于变换Observable对象的,map操作符返回一个Observable对象,这样就是实现链式调用,在

一个Observable对象上多次使用map操作符,最终将简洁的数据传递给Subscribe对象。

特性:

1,不必返回Observable对象返回的类型,可以使用吗,map操作符返回一个发出新的数据类型的Observable对象  

2.可以对一个Observable多次使用map。

from()接收一个集合为输入,然后每次输出一个元素给subscriber.

1.from(Iterable<? extends T> iterable)

2.from(T[] array)

flatMap()接收一个Observable的输出作为输入,同时输出另外一个Observable。

map与flatMap的区别

map是在一个item之后被反射之后,到达map处经过转换变成另一个item,然后继续往下走;flatMap是item被饭饭

之后,到达flatMap出经过转换变成一个Observable,而这个Observable并不会直接被发射出去,而是会立即被激

活,然后把它发射出的每个item都传入流中,在继续走下去。

所以flatMap和map有两个区别:

1.经过Observable的转换,相当于重开了一个异步的流。

2.item被分散了,个数发生了变化。

更多操作符:

1.filter过滤,把不符合条件的过滤掉,留下符合条件的

2.take 指定最多输出的数量 

3.doOnNext允许我们在每次输出一个元素之前做一些额外的事情(其实就是在onNext里调用的)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: