android - RxJava flatMapIterable 与 Single

标签 android rx-android rx-java2

我正在尝试稍微整理一下我的代码,而 Single 对我来说似乎是一个不错的选择,因为我正在做的事情只会发出一个结果。

我遇到了一个问题,因为我之前使用 flatMapIterable 来获取我的响应(一个列表)并对每个项目执行一些操作。我不知道如何使用 Single 实现这一目标。

getListOfItems()
.flatMapIterable(items -> items)
.flatMap(item -> doSomethingWithItem())
.toList()

如果 getListOfItems 返回一个 Observable,这很好用,但如果我尝试让它返回一个 Single,那我就做不到了flatMapIterable 并且看不到替代方案,有什么想法吗?

最佳答案

flattenAsObservable应该可以解决问题,它将 Single 成功值映射到 Iterable (list),并将列表中的每个项目作为 Observable 发出。

  getListOfItems()
            .flattenAsObservable(new Function<Object, Iterable<?>>() {
                @Override
                public Iterable<?> apply(@NonNull Object o) throws Exception {
                    return toItems(o);
                }
            })
            .flatMap(item -> doSomethingWithItem())
            .toList()

关于android - RxJava flatMapIterable 与 Single,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42785473/

相关文章:

android - 使用 Intent 的 Action 启动 Activity 并将其限制在 App 内

Android 在预 ICS 中使用开关选项

java - Eclipse 构建过程

android - 顺序 RxJava 网络调用

java - RxAndroid - 来自多个 Observable 的 1 个响应

java - doOnNext() 中的主题未调用 Consumer.accept()

android - 找不到导入 com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder 类

android - 让所有 Observables 订阅并观察某事

android - RxJava2 : execute an async function for every item in a list and wait for callback

java - RxJava Single<> 带有计数、谓词和延迟