java - 使用 Rx 填充具有额外响应的模型

标签 java android rx-java kotlin rx-android

我是 Rx java 的新手,我当前的任务是我有 2 个请求

@GET(NEWS_LIST)
fun getNews(): Observable<NewsResponse>

@GET
fun getNewsImage(@Url url: String): Observable<NewsImage>

我想将图像 url 添加到第二个响应模型的第一个响应模型。第二个取决于第一个。如何将它们合并到 Rx 流中?

所以第一个请求返回新闻列表,然后我需要为每个带有来自该模型的 url 的项目调用 getNewsImage(url),从第二个响应中解析真实图像 url,将其添加到 news 对象并获得填充模型的最终列表 感谢您的任何建议

最佳答案

getNews()
        .flatMap { Observable.fromIterable(it.getTopicsList()) } //or Observable.from() if you use RxJava1
        .flatMap({ getNewsImage(it) }, { topic, imageUrl ->
            topic.imageUrl = imageUrl
            return@flatMap topic
        })
        .toList()

第二个 flatMap 将来自源 Observable 的项目与由这些源项目触发的 Observable 组合起来,并发出这些组合。 More info

关于java - 使用 Rx 填充具有额外响应的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40556056/

相关文章:

android适配器 ListView ,更改为一行

android - 如何在 Android 中获取 OnTouchListener 的 ListView 的位置?

android - 为什么在使用 backpreasurebuffer 时会出现 MissingBackpreasureException?

java - RxJava Observable/Flowable 上的运算符延迟 n 个项目的发射

java - 生成打印偶数和奇数的两个数字的序列?

Java-字符串操作

java.lang.UnsupportedClassVersionError : com/crawljax/cli/JarRunner : Unsupported major. 次要版本 51.0

java - 如何访问与不同类的方法本地内部类同名的类

java - 将 HashMap.keySet() 转换为 CharSequence[]?

java - 如何组合多个异步 RxJava Observables?