首页 > 解决方案 > 完成 Kotlin 中的异步调用列表

问题描述

我们有一个本质上是异步的操作列表。我们想要完成所有的操作让我们说并且想要做另一个任务。我对 Kotlin Coroutines 概念完全陌生,无法完成这项任务。我在互联网上搜索了很多,但由于我没有使用 kotlin 协程或其他 kotlin 异步服务来执行此操作的整体经验。任何人都知道如何完成这项任务将非常有帮助。假设我在列表中有 20 个元素,我想对每个元素进行操作,这本质上是异步的。

      response.data?.let { dataArray ->

                if (dataArray.isNotEmpty()) {
                    it.forEach {
                        it.unpair().done{
                           // Async call.  
                       }
                    }
              // All async operation completed do another task.
                    
                } else {
                    // Array is empty.
                }
            }

标签: androidkotlinkotlin-coroutines

解决方案


确保您在协程范围内运行它

val requests = ArrayList<Deferred<Unit>>()
val dataArray = response.data ?: return

dataArray.forEach { data ->
  data.unpair().done {
    // YOUR METHOD starts running immediately
    requests.add( async { YOUR METHOD } )
  }
}

// Waits for all YOUR METHOD's to finish
requests.awaitAll()

推荐阅读