gpt4 book ai didi

android - 如何在 for 循环中启动 10 个协程并等待它们全部完成?

转载 作者:行者123 更新时间:2023-12-03 15:08:38 34 4
gpt4 key购买 nike

我需要从数据库中填写对象列表。在将值(value)传递给项目之前,我希望所有项目都完成。这里是否有任何简短的方法调用 await() 来等待每个项目。我想做干净的代码,可能是一些设计模式或技巧?

    for (x in 0..10) {
launch {
withContext(Dispatchers.IO){
list.add(repository.getLastGame(x) ?: MutableLiveData<Task>(Task(cabinId = x)))
}

}

}
items.value = list

最佳答案

coroutineScope { // limits the scope of concurrency
(0..10).map { // is a shorter way to write IntRange(0, 10)
async(Dispatchers.IO) { // async means "concurrently", context goes here
list.add(repository.getLastGame(x) ?: MutableLiveData<Task>(Task(cabinId = x)))
}
}.awaitAll() // waits all of them
} // if any task crashes -- this scope ends with exception

关于android - 如何在 for 循环中启动 10 个协程并等待它们全部完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55877419/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com