【发布时间】:2020-04-22 08:39:01
【问题描述】:
假设我有 repos 列表。我想遍历所有这些。当每个 repo 都返回结果时,我想把它传递下去。
val repos = listOf(repo1, repo2, repo3)
val deferredItems = mutableListOf<Deferred<List<result>>>()
repos.forEach { repo ->
deferredItems.add(async { getResult(repo) })
}
val results = mutableListOf<Any>()
deferredItems.forEach { deferredItem ->
results.add(deferredItem.await())
}
println("results :: $results")
在上述情况下,它等待每个 repo 返回结果。它按顺序填充results,repo1 的结果后跟repo2 的结果。如果repo1 比repo2 花费更多的时间来返回结果,我们将等待repo1 的结果,即使我们有repo2 的结果。
有什么方法可以在我们得到结果后立即传递repo2 的结果?
【问题讨论】:
标签: asynchronous kotlin coroutine kotlin-coroutines