Middle
Co je to funkce 'suspend' v Kotlinu?
sobes.tech AI
Odpověď od AI
Funkce suspend je funkce, kterou lze pozastavit (suspend) a později znovu obnovit (resume). Jsou základní součástí korutin v Kotlinu a slouží k provádění asynchronních operací bez blokování vlákna.
Klíčové vlastnosti:
- Může být volána pouze z jiné
suspendfunkce nebo z kontextu korutiny. Kompilátor zajišťuje toto omezení. - Neblokuje vlákno. Při provádění asynchronní operace (například síťového požadavku) funkce
suspendpozastaví provádění korutiny, uvolní vlákno pro jiné úkoly. Když je asynchronní operace dokončena, korutina se obnoví tam, kde byla pozastavena. - Používá se pro strukturovanou paralelitu. Ve spojení s funkcemi jako
launchaasyncz knihovnykotlinx.coroutinesumožňuje psát asynchronní kód v sekvenčním, snadno čitelném stylu. - Kompilátor převádí
suspendfunkce na konečné automaty. To umožňuje uchovávat stav korutiny mezi body pozastavení.
Příklad:
import kotlinx.coroutines.*
suspend fun fetchData(): String {
// Simulace asynchronní operace (například síťový požadavek)
delay(1000) // body pozastavení
return "Data načtena"
}
fun main() = runBlocking {
println("Začínáme načítání...")
val data = fetchData() // volání suspend funkce
println(data)
println("Načítání dokončeno")
}
Zde je fetchData suspend funkce, která používá delay (další suspend funkci) k simulaci zpoždění. delay je bod pozastavení. runBlocking vytváří korutinový blok pro spuštění main jako blokující vlákno, ale uvnitř ní se fetchData provádí neblokujícím způsobem.