Junior — Middle
Как може да се изпълни асинхронен блок код вътре в синхронна функция при използване на Coroutines?
sobes.tech AI
Отговор от 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).