Back to questions
Junior — Middle
74
Каким образом можно выполнить асинхронный блок кода внутри синхронной функции при использовании Coroutines?
Companies where asked
NetUP
Answer from AI
sobes.tech AI
В Kotlin Coroutines, чтобы выполнить асинхронный блок кода внутри синхронной функции, можно использовать функцию runBlocking. Она запускает корутину и блокирует текущий поток до завершения её выполнения.
Пример:
fun syncFunction() {
runBlocking {
// Асинхронный код внутри
val result = async {
// какая-то suspend-функция
delay(1000)
"Результат"
}.await()
println(result)
}
}
Таким образом, runBlocking позволяет из синхронного контекста вызвать suspend-функции и дождаться их результата, не делая саму функцию suspend.
Важно использовать runBlocking аккуратно, чтобы не блокировать UI-поток в Android. Обычно для асинхронной работы в Android используют suspend-функции или корутины, запущенные в подходящем контексте (например, через lifecycleScope).