Sobes.tech
Middle

Kas ir 'suspend' funkcija Kotlin?

sobes.tech AI

Atbilde no AI

suspend funkcija — tā ir funkcija, kuru var pārtraukt (suspendēt) un atsākt (resume) vēlāk. Tā ir fundamentāla korutīnu (coroutines) sastāvdaļa Kotlin un tiek izmantota asinhronisku operāciju veikšanai bez pavediena bloķēšanas.

Galvenās īpašības:

  • Var tikt izsaukta tikai no citas suspend funkcijas vai korutīnas konteksta. Kompilers nodrošina šo ierobežojumu.
  • Ne bloķē pavedienu. Veicot asinhronu operāciju (piemēram, tīkla pieprasījumu), suspend funkcija pārtrauc korutīnas izpildi, atbrīvojot pavedienu citām uzdevumiem. Kad asinhrona operācija ir pabeigta, korutīna atsākas no vietas, kur tā tika pārtraukta.
  • Tiek izmantota strukturētai paralēlismam. Apvienojot ar launch un async funkcijām no kotlinx.coroutines bibliotēkas, tā ļauj rakstīt asinhrono kodu secīgā, viegli lasāmā stilā.
  • Kompilators pārvērš suspend funkcijas galapunktos. Tas ļauj saglabāt korutīnas stāvokli starp pārtraukšanas punktiem.

Piemērs:

import kotlinx.coroutines.*

suspend fun fetchData(): String {
    // Asinhronas operācijas imitācija (piemēram, tīkla pieprasījums)
    delay(1000) // pārtraukšanas punkti
    return "Dati ielādēti"
}

fun main() = runBlocking {
    println("Sākam ielādi...")
    val data = fetchData() // izsauc suspend funkciju
    println(data)
    println("Ielāde pabeigta")
}

Šeit fetchData ir suspend funkcija, kas izmanto delay (vēl viena suspend funkcija), lai imitētu aizkavi. delay ir pārtraukšanas punkts. runBlocking izveido korutīnas telpu main izpildei kā bloķējošu pavedienu, bet iekšā fetchData tiek izpildīta neblokējošā veidā.