处理列表时选择使用Observable.just还是Single

时间:2019-05-14 18:42:16

标签: rx-java

在我的应用中,我一次检索到10个项目列表,直到没有更多可用项目为止。我需要按顺序处理每个项目。如果我正确理解,可以使用RxJava中的Observable.just或Single完成。我不清楚该选择哪一个,甚至是否有所作为。

还是我完全错了,这些都不适合吗?

1 个答案:

答案 0 :(得分:1)

如果要对列表的每个项目执行操作,则可能需要Observable。顾名思义,Single用于一次发射。

请考虑以下内容:

List<String> items = new ArrayList<>(10);
// lets say this array list is already populated

Observable.fromIterable(items)
        // the map operator handles each emission individually
        .map(String::length)
        .subscribe(System.out::println);

如果我们改用Single,它看起来像:

Single.just(items)
        .toObservable()
        .flatMapIterable(strings -> strings)
        .map(String::length)
        .subscribe(System.out::println);

在这里您可以看到我们有items的单个发射,但是为了处理列表中的每个字符串,我们都需要将其转换为该列表上的可观察且平坦的地图,因此我们得到了每个列表中的元素。本质上,这只是直接使用Observable的粗俗版本

现在,如果我们将其扩展为检索一批数据(以10为一组),则将应用相同的原理。这取决于您如何检索这些批次,以便确切地说出它将如何与创建Observable挂钩。