![](/img/trans.png)
[英]Combine data from multiple API calls using retrofit and RxJava (Android)
[英]Merge results from multiple API calls without using RxJava?
我认为是在不使用 RxJava 的情况下处理异步 Retrofit 请求(问题的核心是 Retrofit 响应的异步性),您有 3 个选择(也许我错过了一些东西):
suspend
添加到所有请求方法中,然后从协程内部调用它们,然后使用集合的方法组合所有结果,例如。 要使用协程,您必须使用 Kotlin(至少在代码的这个网络部分)并添加额外的协程依赖项。CompletableFuture
作为结果设置为所有请求方法,然后使用运算符thenCombine()
组合结果。 要在 Android 中使用 Java8 的功能,您必须执行一些额外的步骤(文档)。至于你提到的 LiveData,没有内置的方法可以让 Retrofit 的结果包装在 LiveData 中。 问题是 Retrofit 的结果不是实时的(例如,在 Room 框架中它们是实时的,并且结果有 LiveData-wrapper),因为没有到 API 服务器的实时连接正在等待。 我认为您可以为此获得一些适配器,然后使用 MediatorLiveData 但它不会是开箱即用的,无论如何您应该使用上述异步方法之一来处理 Retrofit 的响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.