она вернула COROUTINE_SUSPENDED и мы получается вышли из стейт машины? Значит future у нас больше не выполняется но что с ней произошло? Она же не вернула результат
Стейт-машина осталась, ссылку на неё кто-то держит и когда-нибудь вызовет. В этом вся суть - мы сохраняем состояние и выходим наверх, освобождая поток, а когда операция внутри выполнится, выполнение продолжится с того же места с её результатом. Future - это немного другое. Стейт-машина suspend-функции неразрывно связана с Continuation (вообще это один и тот же объект).
Обсуждают сегодня