Назад к задачам
Junior — Senior
7

Преобразование функции с callback в suspend‑функцию

Компании, где спрашивали:

Effective Mobile
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В проекте используется API, которое осуществляет сетевой запрос. Его метод getUser принимает идентификатор и функцию‑обработчик (callback). Требуется обернуть этот асинхронный вызов в suspend‑функцию, чтобы можно было получать результат в корутине без явного колбэка.

//--> метод getUser работает асинхронно но нам нужно получить данные синхронно в корутине
Api().getUser(id) { user ->

}

//ответ
suspend fun getUser(id: String): User = suspendCoroutine<User> { continuation ->
    Api().getUser(id) { user ->
        continuation.resume(user)
    }
}