Не используйте Dispatchers.IO
для вызова приостановленных (неблокирующих) функций. Весь ваш код может остаться на диспетчере Main
. Кроме того, используйте от coroutineScope
до launch
столько подзадач, сколько вам нужно, и Kotlin позаботится о том, чтобы все были завершены до завершения вызова coroutineScope
.
Все вместе, ваш код должен выглядеть следующим образом:
viewModelScope.launch {
_isLoading.value = true
coroutineScope {
repeat(serverAccountList.size) {
launch { createHelloRequest(it) }
}
}
_isLoading.value = false
}