rxJava 学习之路(二)

在上篇文章中实现只是简单的认识了rxJava,这节来学习它的一些基本操作符,这才是rxjava的强大之处


参考:http://gank.io/post/560e15be2dca930e00da1083

先说两个重点:
1.Observable和Subscriber可以做任何事情
Observable可以是一个数据库查询,Subscriber用来显示查询结果;Observable可以是屏幕上的点击事件,Subscriber用来响应点击事件;Observable可以是一个网络请求,Subscriber用来显示请求结果。
2. Observable和Subscriber是独立于中间的变换过程的。
在Observable和Subscriber中间可以增减任何数量的map。整个系统是高度可组合的,操作数据是一个很简单的过程。


可能现在说不太了解,直接上代码,为了方便读者看,代码都是全部展开的


变换:(map)
所谓变换,就是将事件序列中的对象或整个序列进行加工处理,转换成不同的事件或事件序列。

Observable.just("你好").map(new Func1<String, String>() {


    @Override
    public String call(String s) {
        return s + "-RxJava";
    }
}).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {

        //字符串变成了 你好-RxJava
        textView.setText(s);
    }
});

map 不仅仅局限于只是返回Observable对象返回的类型,我们可以使用map返回一个新的Observable对象,下面我们来看看

//变换字符操作 map()
Observable.just("你好").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(integer);
          }
      }
).subscribe(new Action1<String>() {


    @Override
    public void call(String s) {
        Log.i(TAG, s);
    }
});
由于让Subscribe尽可能做更少的操作,我们添加了第二个map,再一次转换,最后直接得到数据。


ok,上面说到的只是rxJava的基础知识,rxjava的强大之处在于它的操作符,下面继续来看,当你了解了它之后你一定迫不及待的更想学习它。

把字符串转成hash类型输出,当然,map的强大之处不仅仅在于此,这里只是一个简单的示例,更多的看官方文档


当然,map只是一对一的操作,那么如果要进行一对多的操作呢,要用到flatMap

Observable.just("hello world").flatMap(new Func1<String, Observable<String>>() {
    @Override
    public Observable<String> call(String s) {
        return Observable.just(s + "--nihao");
    }
}).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        Log.i(TAG, s);
    }
});
注意:
map和flatmap虽然都是接受一个函数作为参数(Func1),但是返回值是不一样的,flatMap返回的是Observable类型,具体可看http://blog.csdn.net/new_abc/article/details/48025513


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

String[] str = {"aaa", "bbb", "ccc"};
Observable.from(str).subscribe(new Action1<String>() {
    @Override
    public void call(String s) {
        Log.i(TAG, s);
    }
});
这里也可以用for循环实现,不过这样是不是更简单了呢,完全代替for循环

rxjava的操作符很多,当真正的掌握了之后肯定就会爱上它了


官方文档:https://mcxiaoke.gitbooks.io/rxdocs/content/topics/How-To-Use-RxJava.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值