Sobes.tech
Junior — Middle

Como iniciar a execução de uma função suspend em Kotlin?

sobes.tech IA

Resposta da IA

Em Kotlin, funções suspend só podem ser chamadas de outra função suspend ou de uma coroutine. Para iniciar uma função suspend fora de um contexto suspendido, usa-se um scope de coroutine e funções de lançamento, como launch ou async da biblioteca kotlinx.coroutines.

Exemplo:

import kotlinx.coroutines.*

suspend fun fetchData() {
    delay(1000) // simulação de uma operação longa
    println("Dados recebidos")
}

fun main() {
    runBlocking { // inicia uma coroutine e bloqueia a thread atual
        fetchData() // chamada de função suspend dentro de um contexto suspendido
    }

    GlobalScope.launch { // inicia uma coroutine no scope global
        fetchData()
    }
    Thread.sleep(2000) // para que o programa não termine antes
}

Portanto, para iniciar uma função suspend, deve-se estar dentro de uma função suspend ou lançar uma coroutine usando launch, async ou runBlocking.