美文网首页
Rxjava2 — map,flatMap 和 concatMa

Rxjava2 — map,flatMap 和 concatMa

作者: 奔跑的佩恩 | 来源:发表于2020-11-20 08:40 被阅读0次

前言

在上节中,我们学习了RxJava2SubscribeOnObserveOn的使用,大家感兴趣的话,可以查看以下文章Rxjava2 — SubscribeOn和ObserveOn 详解
那么,今天让我们来学习下RxJava2的另外几个常见操作符mapflatMapconcatMap的使用。

今天涉及内容:

  1. Rxjava2 依赖
  2. map 的使用
  3. flatMap 的使用
  4. concatMap 的使用
  5. map,flatMap 和 concatMap区别

一. Rxjava2 依赖

首先我们需要在app_module对应的build.gradle中添加如下依赖:

dependencies {
    implementation "io.reactivex.rxjava2:rxandroid:2.0.1"
}

二. map 的使用

经map操作过的数据,可以进行不同数据类型的转换,非常像一个适配器,那么下面就让我们看看map使用的示例吧:

        Observable.just(1)
                .subscribeOn(Schedulers.io()) //试图切换io线程
                .map(new Function<Integer, String>() {
                    @Override
                    public String apply(Integer integer) throws Exception {

                        return "第一个";
                    }
                })
                .observeOn(AndroidSchedulers.mainThread()) //切换主线程
                .subscribe(new Consumer<String>() {
                    @Override
                    public void accept(String s) throws Exception {
                        LogUtil.i("======接收结果====s="+s);
                    }
                });

打印结果如下:

======接收结果====s=第一个

这里直接就是将开始输入的int类型的数据1,经过map的系列操作,最后变成字符串 第一个输出,实现了数据转换功能。
需要注意的是,Function<T, R>操作符中,T表示输入数据类型,而R表示输出数据类型。

三. flatMap 的使用

flatMap主要用于处理多个事件嵌套执行的情况,比如说,用户在发送登录成功后,立马要获取打印数据信息,则此时包含两个通讯:

  • 登录通讯
  • 获取打印信息通讯

且他们之间的关系是,登录成功后再去获取打印信息。则flatMap使用示例代码如下:

相关文章

网友评论

      本文标题:Rxjava2 — map,flatMap 和 concatMa

      本文链接:https://www.haomeiwen.com/subject/jmxriktx.html