如何在RxAndroid中执行请求?

时间:2016-06-05 22:53:11

标签: android rx-android

我需要检查它是否在DB加载中退出并传递给视图 如果不 从服务器加载,存储在数据库中,然后传递给视图 我在方法doOnNext(),flatMap()中混淆,我没有使用哪个

我无法理解doOnNext(),flatMap()

方法的含义

1 个答案:

答案 0 :(得分:2)

我会尽力帮助您使用此操作符。

正如文档所述,关于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,然后合并那些结果   可观察并发布此次合并的结果。

因此,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

希望它能帮助你兄弟!

最好的问候。