rxjava系列(二)-- 强大的操作符

来源:互联网 发布:qt4 串口源码 编辑:程序博客网 时间:2024/06/06 17:34

rxjava强大的操作符,rxjava之所以如此强大、如此受开发者追捧,相信Operators是关键原因

http://blog.csdn.net/mo_android/article/details/73799773介绍了rxjava中的被观察者(Observable)、观察者(Subscriber)以及二者的实例化和绑定。这篇文章来总结下rxjava中强大的操作符。

1.何为操作符(Operators)

操作符是用来转换被观察者(Observable)对象的,操作符用于在被观察者(Observable)和最终的观察者(Subscriber)之间修改被观察者(Observable)发出的事件。

2.实例

定义是那么抽象,这里还是通过一些具体的操作符使用来理解rxjava操作符。

实例一 map()操作符

    private void test1(){        Observable.just("Hello world")                .map(new Func1<String, Integer>() {                    @Override                    public Integer call(String s) {                        return s.hashCode();                    }                })                .map(new Func1<Integer, String>() {                    @Override                    public String call(Integer integer) {                        return integer.toString();                    }                })                .subscribe(new Action1<String>() {                    @Override                    public void call(String s) {                        System.out.println(s);                    }                });    }

这样就可以实现链式调用,在一个Observable对象上多次使用map操作符,最终将最简洁的数据传递给Subscriber对象。上面实例,首先创建一个被观察者对象,通过map操作符会将字符串处理成整形code码,再通过map操作符会将整形code码转换为字符串,最后订阅观察者,观察者监听到了最终返回的code码转换成的字符串。
注意:这里用到一个Func1函数,其功能和Action1类似,比Action1多了返回值。

实例二 flatMap()操作符

将Observable发射的数据变换为Observables集合,然后将这些Observable发射的数据平坦化的放进一个单独的Observable,内部采用merge合并。

private void test2(){        Observable.just("http://www.baidu.com/",                    "http://www.google.com/",                    "https://www.bing.com/")                .flatMap(new Func1<String, Observable<String>>() {                    @Override                    public Observable<String> call(String s) {                        return Observable.just(s);                    }                })                .subscribe(new Action1<String>() {                    @Override                    public void call(String s) {                        System.out.println(s);                    }                });    }

关于操作符,这篇文章总结了非常完整的使用。
http://blog.csdn.net/maplejaw_/article/details/52396175

下篇文章我们将真正体验rxjava在Android开发中的应用。

欢迎大家留言讨论。