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开发中的应用。
欢迎大家留言讨论。