Rxjava2.X的一些讲解

rxjava是什么? 

总结一句话就是   异步切换操作的工具

Rxjava常用的一些操作符

1.concat(英文翻译为连接的意思)

 

Rxjava2.X的一些讲解

就是将多个Observable(上游发送器又名被观察者)统一起来按顺序返回一个Observable

下面是源码的一重要部分,返回的是一个T类型,所以两个被观察者的返回的类型应该是一样的,或者可以传入一个Object

Rxjava2.X的一些讲解

如下图所示,创建两个Observable

 

 

Rxjava2.X的一些讲解

 

然后用concat连接起来

Rxjava2.X的一些讲解

 

如果Text(12)这样打印的结构会是什么呢?

Rxjava2.X的一些讲解

没错只走了第一个Observable,因为他只有等第一个执行完onnext()并且执行onComplete()方法后第二个才会执行

我们验证一些

Rxjava2.X的一些讲解

看下打印结果

Rxjava2.X的一些讲解
并且observer(下游又名观察者)onComplete()方法是又最后一个Observable所调用的

 

2.map()操作符,用来转换返回结果值的

Rxjava2.X的一些讲解

传入一个function(传入的值,需要转换为的值) 

Observable.create(new ObservableOnSubscribe<String>() {
    @Override public void subscribe(ObservableEmitter<String> e) throws Exception {
           e.onNext("234");
    }
}).map(new Function<String, Integer>() {
    @Override public Integer apply(String s) throws Exception {
         if (s.equals("234")){
             return 3;
         }else{
             return 5;
         }

    }
}).subscribe(new Observer<Integer>() {
    @Override public void onSubscribe(Disposable d) {
        System.out.println("Disposable == " + d.isDisposed());
    }

    @Override public void onNext(Integer integer) {
        System.out.println("onNext == " + integer);
    }

    @Override public void onError(Throwable e) {

    }

    @Override public void onComplete() {
        System.out.println("onComplete == ");
    }
});

我们看下打印的结果是什么

Rxjava2.X的一些讲解

没错转换了,这就是map转换器的作用

大家可能看到

Rxjava2.X的一些讲解

这是是干嘛的呢?

Rxjava2.X的一些讲解

取消订阅的功能