Sobes.tech
Junior — Middle

Jak lze zavolat suspendovanou funkci v synchronním kódu?

sobes.tech AI

Odpověď od AI

Nelze přímo volat suspend funkci ze synchronního kódu, protože vyžaduje kontext coroutine. Nicméně je možné spustit coroutine a počkat na výsledek blokujícím způsobem pomocí funkce runBlocking.

Příklad:

import kotlinx.coroutines.*

fun main() {
    val result = runBlocking {
        suspendFunction()
    }
    println(result)
}

suspend fun suspendFunction(): String {
    delay(1000)
    return "Výsledek"
}

runBlocking vytváří scope coroutine a blokuje aktuální vlákno do doby dokončení coroutine, což umožňuje používat suspend funkce v synchronním kódu.