Sobes.tech
Junior — Middle

Jak można zainicjować wykonanie funkcji suspend w Kotlin?

sobes.tech AI

Odpowiedź od AI

W Kotlinie funkcje suspend można wywołać tylko z innej funkcji suspend lub z korutyny. Aby uruchomić funkcję suspend poza kontekstem suspend, używa się scope korutyny i funkcji uruchamiających, takich jak launch lub async z biblioteki kotlinx.coroutines.

Przykład:

import kotlinx.coroutines.*

suspend fun fetchData() {
    delay(1000) // symulacja długiej operacji
    println("Dane otrzymane")
}

fun main() {
    runBlocking { // uruchamia korutynę i blokuje bieżący wątek
        fetchData() // wywołanie funkcji suspend w kontekście suspend
    }

    GlobalScope.launch { // uruchomienie korutyny w zakresie globalnym
        fetchData()
    }
    Thread.sleep(2000) // aby program nie zakończył się wcześniej
}

Zatem, aby zainicjować funkcję suspend, należy być w funkcji suspend lub uruchomić korutynę za pomocą launch, async lub runBlocking.