Middle
Ce este funcția 'suspend' în Kotlin?
sobes.tech AI
Răspuns de la AI
Funcția suspend este o funcție care poate fi suspendată (suspend) și reluată (resume) ulterior. Acestea sunt o parte fundamentală a corutinelor în Kotlin și sunt utilizate pentru a efectua operații asincrone fără a bloca firul de execuție.
Caracteristici cheie:
- Poate fi apelată doar dintr-o altă funcție
suspendsau din contextul unei corutine. Compilatorul asigură această restricție. - Nu blochează firul de execuție. În timpul efectuării unei operații asincrone (de exemplu, o solicitare de rețea), funcția
suspendsuspendă execuția corutinei, eliberând firul pentru alte sarcini. Când operația asincronă se finalizează, corutina este reluată de unde a fost oprită. - Este utilizată pentru paralelism structurat. În combinație cu funcții precum
launchșiasyncdin bibliotecakotlinx.coroutines, permite scrierea de cod asincron într-un stil secvențial și ușor de citit. - Compilatorul transformă funcțiile
suspendîn automate finite. Acest lucru permite păstrarea stării corutinei între punctele de suspendare.
Exemplu:
import kotlinx.coroutines.*
suspend fun fetchData(): String {
// Simulare a unei operații asincrone (de exemplu, o solicitare de rețea)
delay(1000) // puncte de suspendare
return "Date încărcate"
}
fun main() = runBlocking {
println("Începem încărcarea...")
val data = fetchData() // apelare funcție suspend
println(data)
println("Încărcarea s-a încheiat")
}
Aici, fetchData este o funcție suspend care folosește delay (o altă funcție suspend) pentru a simula o întârziere. delay este un punct de suspendare. runBlocking creează un domeniu de corutină pentru a executa main ca un fir blocant, dar în interiorul acesteia, fetchData se execută în mod asincron.