Middle
O que é a função 'suspend' em Kotlin?
sobes.tech IA
Resposta da IA
A função suspend é uma função que pode ser suspensa (suspend) e retomada (resume) posteriormente. Elas são uma parte fundamental das corrotinas em Kotlin e são usadas para realizar operações assíncronas sem bloquear a thread.
Características principais:
- Só pode ser chamada de outra função
suspendou do contexto de uma corrotina. O compilador garante essa restrição. - Não bloqueia a thread. Ao realizar uma operação assíncrona (por exemplo, uma requisição de rede), a função
suspendsuspende a execução da corrotina, liberando a thread para outras tarefas. Quando a operação assíncrona termina, a corrotina é retomada de onde parou. - Usada para paralelismo estruturado. Em combinação com funções como
launcheasyncda bibliotecakotlinx.coroutines, permite escrever código assíncrono de forma sequencial e fácil de ler. - O compilador transforma funções
suspendem autômatos finitos. Isso permite manter o estado da corrotina entre os pontos de suspensão.
Exemplo:
import kotlinx.coroutines.*
suspend fun fetchData(): String {
// Simulação de uma operação assíncrona (por exemplo, uma requisição de rede)
delay(1000) // pontos de suspensão
return "Dados carregados"
}
fun main() = runBlocking {
println("Começando o carregamento...")
val data = fetchData() // Chamada de função suspend
println(data)
println("Carregamento concluído")
}
Aqui, fetchData é uma função suspend que usa delay (outra função suspend) para simular um atraso. delay é um ponto de suspensão. runBlocking cria um escopo de corrotina para executar main como uma thread bloqueante, mas dentro dela, fetchData é executada de forma não bloqueante.