kotlin - 如何对同一端点并行进行多个 API 调用并将所有响应合并到输出数组中?

标签 kotlin retrofit rx-java kotlin-coroutines

目前,在我的 Kotlin 代码中,我有一个用户数组,我执行一个 for 循环并对每个用户的信息发出 GET 请求,然后将他们的信息添加到 MutableList 中。每当有新的用户信息发布到该列表时,我都会观察该列表并更新我的 UI。

但我想知道如何同时执行所有用户调用并等待最终结果并一次性发布 UI?

最佳答案

您可以使用async启动请求的语法,然后 awaitAll对它们(请注意,一旦任何延迟失败,它就会立即失败)。

类似于:

val one = async { doSomethingUsefulOne() }
val two = async { doSomethingUsefulTwo() }

val result = awaitAll(one, two) // will give you a list of results

所以在你的情况下你可以 map对用户启动异步操作。

示例:https://kotlinexpertise.com/kotlin-coroutines-concurrency/

Roman Elisarov 关于结构化并发的博客:https://elizarov.medium.com/structured-concurrency-722d765aa952 (并行分解部分)

关于kotlin - 如何对同一端点并行进行多个 API 调用并将所有响应合并到输出数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66464708/

相关文章:

intellij-idea - 有没有办法限制 Kotlin 中 stdlib 函数的可见性?

android - 具有改建嵌套对象响应的房间持久性

java - RxJava 中的 FlatMap 和订阅

java - 从java调用异步kotlin方法

kotlin - 警告 : API 'variant.getPackageLibrary()' is obsolete and has been replaced with 'variant.getPackageLibraryProvider()'

android - 将项目添加到 LiveData 列表时通知观察者

java - 在 Groovy 中强制显式返回语句,尤其是基于 RxJava 的代码?

java - 改造后参数

retrofit - 如何在onError(RxJava)之后保留订户

android - RxJava 事件总线