操作符之变换操作符

     1、作用

  • 对事件序列中的事件 / 整个事件序列 进行加工处理(即变换),使得其转变成不同的事件 / 整个事件序列

     2、类型

     3、详解

          3.1   map()----- 见rxdocs.pdf第80页

       作用:对 被观察者发送的每1个事件都通过 指定的函数 处理,从而变换成另外一种事件

    public static void map() {
        Observable.just("I", "am", "RxJava")
                .map(new Function<String, Integer>() {
                    @Override
                    public Integer apply(String s) throws Exception {
                        return s.length();
                    }
                }).subscribe(new Observer<Integer>() {
            @Override
            public void onSubscribe(Disposable d) {
                Log.d(TAG, "onSubscribe");
            }

            @Override
            public void onNext(Integer value) {
                Log.d(TAG, "onNext: value = " + value);
            }

            @Override
            public void onError(Throwable e) {
                Log.d(TAG, "onError: " + e.toString());
            }

            @Override
            public void onComplete() {
                Log.d(TAG, "onComplete");
            }
        });
    }

          输出:

08-06 14:55:52.715 18643 18643 D Operation: onSubscribe
08-06 14:55:52.716 18643 18643 D Operation: onNext: value = 1
08-06 14:55:52.716 18643 18643 D Operation: onNext: value = 2
08-06 14:55:52.716 18643 18643 D Operation: onNext: value = 6
08-06 14:55:52.716 18643 18643 D Operation: onComplete

          3.2   flatMap()----- 见rxdocs.pdf第72页

       作用:将被观察者发送的每个事件序列进行 拆分 & 单独转换,再合并成一个新的事件序列,最后再进行发送

       原理:

  • 为事件序列中每个事件都创建一个 Observable 对象;
  • 将对每个 原始事件 转换后的 新事件 都放入到对应 Observable对象;
  • 将新建的每个Observable 都合并到一个 新建的、总的Observable 对象;
  • 新建的、总的Observable 对象 将 新合并的事件序列 发送给观察者(Observer

猜你喜欢

转载自www.cnblogs.com/andy-loong/p/11308956.html