Назад к вопросам
Middle
395
questionbank
Как запустить два сетевых запроса одновременно с использованием Coroutine в Kotlin?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Чтобы запустить два сетевых запроса одновременно с использованием корутин в Kotlin, можно использовать async.
import kotlinx.coroutines.*
suspend fun fetchUserData(): String {
delay(1000) // Имитация сетевого запроса
return "User Data"
}
suspend fun fetchItems(): String {
delay(1500) // Имитация сетевого запроса
return "Items Data"
}
suspend fun performConcurrentRequests() = coroutineScope {
val userDataDeferred: Deferred<String> = async { fetchUserData() }
val itemsDataDeferred: Deferred<String> = async { fetchItems() }
val userData = userDataDeferred.await()
val itemsData = itemsDataDeferred.await()
println("User Data: $userData")
println("Items Data: $itemsData")
}
fun main() = runBlocking {
performConcurrentRequests()
}
asyncзапускает новый процесс в параллельной корутине и возвращаетDeferred, который является облегченной неблокирующей будущей.await()приостанавливает выполнение до тех пор, пока соответствующая корутина не завершит работу и не вернет результат.coroutineScopeсоздает область видимости, в которой все дочерние корутины отменяются, если какая-либо из них завершается с ошибкой.runBlockingиспользуется здесь для запуска блокирующей функцииmainв корутине, чтобы можно было вызвать приостанавливаемые функции. В реальном Android-приложении для запуска корутин часто используются другие диспетчеры и области видимости (например,ViewModelScope,LifecycleScope).