我对Kotlin及其协程模块还很陌生,一开始我想做的事情似乎很简单。
我有一个函数(下面的getCostlyList()
),该函数在进行一些昂贵的计算后会返回一个List。此方法依次称为多次。然后将所有这些调用合并到一个集中。
private fun myFun(): Set<Int> {
return (1..10)
.flatMap { getCostlyList() }
.toSet()
}
private fun getCostlyList(): List<Int> {
// omitting costly code here...
return listOf(...)
}
我的目标是使用协程以异步方式对此昂贵的方法进行这些调用,但是我很难解决这个问题。
答案 0 :(得分:3)
您可以这样写:
private suspend fun myFun(): Set<Int> = coroutineScope {
(1..10)
.map { async { getCostlyList() } }
.awaitAll()
.flatten()
.toSet()
}