Sobes.tech
Back to questions
Junior — Middle
78

Какие конструкции для создания корутин ты знаешь вне основных функций?

Companies where asked
СБЕРСБЕР
Магнит Тех
ИннотехИннотех
m4bank
Uzum
Газпром МедиаГазпром Медиа
Core outstaff
X5 DigitalX5 Digital

Answer from AI

sobes.tech AI

В Kotlin для Android корутины можно создавать не только в основных функциях, но и с помощью различных конструкций:

  • launch — запускает новую корутину без возвращаемого результата, обычно в контексте CoroutineScope.

  • async — запускает корутину, которая возвращает результат через Deferred.

  • runBlocking — блокирует текущий поток, ожидая завершения корутины (чаще используется в тестах или main).

  • withContext — переключает контекст выполнения внутри корутины, например, на Dispatchers.IO.

Пример создания корутины вне основной функции:

fun fetchData(scope: CoroutineScope) {
    scope.launch {
        val data = async { loadDataFromNetwork() }.await()
        println(data)
    }
}

suspend fun loadDataFromNetwork(): String {
    // имитация сетевого запроса
    delay(1000)
    return "Data"
}

Таким образом, корутины можно создавать через launch, async, использовать withContext для переключения контекста, а также комбинировать эти конструкции для эффективного асинхронного кода.