Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kotlin: coroutines, suspension, state-machine

Как работает suspend-функция под капотом (стейт-машина)?

Вопрос объясняет механизм преобразования suspend-функций в стейт-машину.

Короткий ответ

Компилятор разбивает suspend-функцию на стейт-машину, где каждый suspend-вызов — это состояние. При возобновлении выполняется переход к следующему состоянию.

Длинный ответ

1. Преобразование кода

Исходная функция:

suspend fun fetchData(): String {
    val data = api.fetch() // Точка приостановки 1
    return data.uppercase() // Точка приостановки 2
}

После компиляции (псевдокод):

class FetchDataStateMachine : Continuation<...> {
    var state = 0
    var result: Any? = null

    override fun resumeWith(result: Result<...>) {
        when (state) {
            0 -> { 
                state = 1
                api.fetch(this) // Запуск с колбэком
            }
            1 -> {
                val data = result as String
                println(data.uppercase())
            }
        }
    }
}

2. Ключевые моменты

  • Каждый suspend-вызов — переход между состояниями.

  • Локальные переменные сохраняются в полях стейт-машины.

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Kotlin

    Kotlin

Ключевые слова

#coroutines

#suspension

#state-machine

Подпишись на Android Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.