Sobes.tech
Junior — Middle

Kaip galima inicijuoti suspend funkcijos vykdymą Kotlin?

sobes.tech AI

Atsakymas iš AI

Kotlin'e suspend funkcijos gali būti iškviestos tik iš kitos suspend funkcijos arba iš korutinės. Norint paleisti suspend funkciją už suspend konteksto ribų, naudojamas coroutine scope ir paleidimo funkcijos, tokios kaip launch arba async iš kotlinx.coroutines bibliotekos.

Pavyzdys:

import kotlinx.coroutines.*

suspend fun fetchData() {
    delay(1000) // ilgos operacijos imitacija
    println("Duomenys gauti")
}

fun main() {
    runBlocking { // paleidžia korutiną ir blokuoja esantį srautą
        fetchData() // suspend funkcijos iškvietimas suspend kontekste
    }

    GlobalScope.launch { // paleidžia korutiną globaliame scope
        fetchData()
    }
    Thread.sleep(2000) // kad programa nesibaigtų anksčiau
}

Taigi, norint inicijuoti suspend funkciją, turite būti suspend funkcijos viduje arba paleisti korutiną naudodami launch, async ar runBlocking.