Sobes.tech
Middle

Šta je suspend funkcija u jeziku Kotlin?

sobes.tech АИ

Одговор од АИ

Funkcija suspend — to funkcija u Kotlinu koja može biti "zaustavljena" (suspend) i kasnije "nastavljena" (resume). Koristi se za pisanje asinhronog i neblokirajućeg koda u imperativnom stilu, što olakšava rad sa dugotrajnim operacijama kao što su mrežni zahtevi ili operacije sa bazom podataka.

Ključne osobine suspend funkcija:

  • Modifikator suspend: Deklariše se ključnom reči suspend pre imena funkcije.
  • Rad sa korutinama: Pozivaju se samo iz drugih suspend funkcija ili iz buildera korutina (npr. launch, async).
  • Ne blokirajuća priroda: Zaustavljanje suspend funkcije ne blokira nit na kojoj se izvršava. Umesto toga, nit se oslobađa za izvršavanje drugih zadataka, a kada je rezultat asinhrone operacije spreman, izvršavanje funkcije se nastavlja od mesta zaustavljanja.
  • Jasno označavanje: Modifikator suspend jasno ukazuje da poziv ove funkcije potencijalno može biti dugotrajan i ne bi trebalo da se izvršava direktno na glavnoj niti (UI niti).

Primer:

// Obična funkcija
fun fetchDataBlocking(): String {
    // Blokirajući mrežni poziv, može da se zaglavi
    Thread.sleep(2000)
    return "Podaci primljeni"
}

// Suspend funkcija
suspend fun fetchDataNonBlocking(): String {
    // Asinhroni mrežni poziv
    // Korutina se ovde zaustavlja, nit se ne blokira
    delay(2000) // Primer suspend funkcije koja simulira kašnjenje
    return "Podaci primljeni asinhrono"
}

Suspend funkcije su osnova za izgradnju lako čitljivog i održivog asinhronog koda koristeći korutine.