如何将Kotlin的协同程序用于集合
我对Kotlin及其协同程序模块相当陌生,我正在尝试做一些起初对我来说非常简单的事情 我有一个下面的函数getCostlyList,它在一些代价高昂的计算之后返回一个列表。此方法称为多时间顺序。然后将所有这些调用合并到一个集合中如何将Kotlin的协同程序用于集合,kotlin,kotlin-coroutines,Kotlin,Kotlin Coroutines,我对Kotlin及其协同程序模块相当陌生,我正在尝试做一些起初对我来说非常简单的事情 我有一个下面的函数getCostlyList,它在一些代价高昂的计算之后返回一个列表。此方法称为多时间顺序。然后将所有这些调用合并到一个集合中 private fun myFun(): Set<Int> { return (1..10) .flatMap { getCostlyList() } .toSet()
private fun myFun(): Set<Int> {
return (1..10)
.flatMap { getCostlyList() }
.toSet()
}
private fun getCostlyList(): List<Int> {
// omitting costly code here...
return listOf(...)
}
我的目标是使用协程异步调用这个代价高昂的方法,但我很难理解这个问题 你可以这样写:
private suspend fun myFun(): Set<Int> = coroutineScope {
(1..10)
.map { async { getCostlyList() } }
.awaitAll()
.flatten()
.toSet()
}