我有一个我想做的请求清单,我想等待所有请求完成才能继续。我正在使用带有重复和异步的Kotlin协程,如下所示。
viewModelScope.launch(Dispatchers.IO) {
repeat(serverAccountList.size) {
async {
createHelloRequest(it) // suspend function
}
}
withContext(Dispatchers.Main) {
_isLoading.value = false
}
}
我如何加入他们,以便我可以在Main Dispatcher中继续我的代码?
不要Dispatchers.IO
用来调用可挂起(非阻塞)函数。您所有的代码都可以保留在Main
调度程序上。此外,使用coroutineScope
到launch
尽可能多的子任务,因为你需要和科特林将确保所有的都完成后再coroutineScope
调用完成。
全部放在一起,您的代码应如下所示:
viewModelScope.launch {
_isLoading.value = true
coroutineScope {
repeat(serverAccountList.size) {
launch { createHelloRequest(it) }
}
}
_isLoading.value = false
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句