【问题标题】:How do I make multiple API calls in parallel to the same endpoint and combine all the responses into an output array?如何对同一个端点并行进行多个 API 调用并将所有响应组合到一个输出数组中?
【发布时间】:2021-06-02 11:46:59
【问题描述】:

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

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

【问题讨论】:

    标签: kotlin retrofit rx-java kotlin-coroutines


    【解决方案1】:

    您可以使用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(关于并行分解的部分)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-22
      • 2020-02-02
      • 2019-08-03
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多