使用Rx进行额外响应的填充模型

时间:2016-11-11 20:55:07

标签: 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>

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

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

2 个答案:

答案 0 :(得分:2)

如果我弄错了:第一个回复是predicate2或一些List<>。所以你可以这样做:

Collection

P.S。关于.from()的文档,关于toList()

答案 1 :(得分:2)

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