【问题标题】:How to implement requests sequently in RxAndroid?如何在 RxAndroid 中依次实现请求?
【发布时间】:2016-06-05 22:53:10
【问题描述】:

我需要检查它是否在数据库加载中退出并传递给查看 如果不 从服务器加载,存储在数据库中,然后传递给视图 我对 doOnNext()、flatMap() 方法感到困惑,我不知道该使用哪一个

看不懂doOnNext()、flatMap()方法的含义

【问题讨论】:

    标签: android rx-android


    【解决方案1】:

    我会尽力帮助您使用此运算符。

    正如文档中关于 doOnNext() 的说明

    修改源 Observable 以便在它调用一个动作时 来电

    因此请查看此示例:

    public class ExampleUnitTest {
        @Test
        public void testSample() throws Exception {
            Observable.just(1,2,3,4,5)
                    .doOnNext(number -> System.out.println("doOnNext: " + number))
                    .subscribe(number -> System.out.println("onNext: " + number));
        }
    }
    

    它将打印:

    doOnNext: 1
    onNext: 1
    doOnNext: 2
    onNext: 2
    doOnNext: 3
    onNext: 3
    doOnNext: 4
    onNext: 4
    doOnNext: 5
    onNext: 5
    

    flatMaps 呢?让我们再次检查文档:

    返回一个 Observable,该 Observable 根据应用函数发出项目 您提供给源 Observable 发出的每个项目,其中 该函数返回一个 Observable,然后合并那些结果 Observables 并发出这次合并的结果。

    因此,flatMap 基于原始流发出的每个项目创建一个新流,并将这些新流合并为一个。

    让我们再看一段代码:

    public class ExampleUnitTest {
        @Test
        public void testSample() throws Exception {
            Observable.just(1, 2, 3, 4, 5)
                    .flatMap(number -> {
                        final String first = number + "A";
                        final String second = number + "B";
    
                        return Observable.just(first, second);
                    })
                    .subscribe(flattedItem -> System.out.println("onNext: " + flattedItem));
        }
    }
    

    它将打印:

    onNext: 1A
    onNext: 1B
    onNext: 2A
    onNext: 2B
    onNext: 3A
    onNext: 3B
    onNext: 4A
    onNext: 4B
    onNext: 5A
    onNext: 5B
    

    希望对你有帮助!

    最好的问候。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-15
      • 2015-08-25
      • 2011-04-11
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      相关资源
      最近更新 更多