我如何使多个API调用并行到相同的端点,并将所有的响应组合到一个输出数组?



目前在我的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操作,并对他们启动async操作。

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

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

相关内容

  • 没有找到相关文章

最新更新