Назад к вопросам
Junior — Middle
71
Можно ли получить результат выполнения функции launch в синхронном режиме?
Компании, где спрашивали
Ютека
Ответ от нейросети
sobes.tech AI
Функция launch в Kotlin Coroutines запускает новую сопрограмму и сразу возвращает объект Job. Она не блокирует текущий поток и не возвращает результат выполнения функции, которую запускает. Получить результат выполнения напрямую из launch в синхронном режиме нельзя, так как launch предназначена для запуска задач, которые не возвращают значения.
Если нужно получить результат асинхронной операции, следует использовать async, которая возвращает Deferred<T>. Тогда можно вызвать await() для получения результата, но await() — это приостановка (suspend) и не блокирует поток, а лишь приостанавливает сопрограмму.
Пример:
val job = launch {
// асинхронная задача
}
// job не содержит результата
val deferred = async {
// вычисление с результатом
42
}
runBlocking {
val result = deferred.await() // получение результата
println(result) // 42
}
Таким образом, получить результат из launch синхронно нельзя, для этого используют async + await.