技术Android developerAndroid Dev

RxJava操作符学习笔记

2015-09-16  本文已影响18009人  程序亦非猿

操作符

操作符是为了解决对Observable对象的变换的问题,操作符用于在Observable和最终的Subscriber之间修改Observable发出的事件。
RxJava提供了很多很有用的操作符。

Subscribers更应该做的事情是“响应”,响应Observable发出的事件,而不是去修改。

所以修改就交给操作符吧.

Map

transform the items emitted by an Observable by applying a function to each item

用来把一个事件转换为另一个事件。
map()操作符就是用于变换Observable对象的,map操作符返回一个Observable对象,这样就可以实现链式调用,在一个Observable对象上多次使用map操作符,最终将最简洁的数据传递给Subscriber对象。

实效

特性:

  1. 它不必返回Observable对象返回的类型,你可以使用map操作符返回一个发出新的数据类型的observable对象。
  2. 可以对一个Observable多次使用map

用一个例子来练习:

//刚创建的Observable是String类型的
Observable.just("Hellp Map Operator")
.map(new Func1<String, Integer>() {
    @Override
    public Integer call(String s) {
        return 2015;//通过第一个map转成Integer
    }
}).map(new Func1<Integer, String>() {
    @Override
    public String call(Integer integer) {
        return String.valueOf(integer);//再通过第二个map转成String
    }
}).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        System.out.println(s);
    }
});

Run起来输出日志:

2015

From

convert various other objects and data types into Observables

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

  1. from(Iterable<? extends T> iterable)
  2. from(T[] array)
from

看个例子,将集合的数据都输出:

List<String> s = Arrays.asList("Java", "Android", "Ruby", "Ios", "Swift");
Observable.from(s).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        System.out.println(s);
    }
});

Log:

Java
Android
Ruby
Ios
Swift

另外from也接受数组类型:

Observable.from(new String[]{"Java","Android"}).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        System.out.println(s);
    }
});

FlatMap

transform the items emitted by an Observable into Observables, then flatten the emissions from those into a single Observable

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

微信公众号
上一篇 下一篇

猜你喜欢

热点阅读