Middle
Co je to suspendní funkce v jazyce Kotlin?
sobes.tech AI
Odpověď od AI
Funkce suspend — je funkce v Kotlinu, kterou lze "pozastavit" (suspend) a později "obnovit" (resume). Používá se k psaní asynchronního, neblokujícího kódu v imperativním stylu, což usnadňuje práci s dlouhotrvajícími operacemi, jako jsou síťové požadavky nebo operace s databází.
Klíčové vlastnosti funkcí suspend:
- Modifikátor
suspend: Deklaruje se klíčovým slovemsuspendpřed názvem funkce. - Práce s korutinami: Jsou volány pouze z jiných suspend funkcí nebo z builderů korutin (například
launch,async). - Neblokující povaha: Pozastavení suspend funkce neblokuje vlákno, na kterém se provádí. Místo toho je vlákno uvolněno pro vykonávání jiných úkolů, a když je výsledek asynchronní operace připraven, pokračuje provádění funkce od místa pozastavení.
- Explicitní označení: Modifikátor
suspendjasně ukazuje, že volání této funkce může být dlouhá operace a nemělo by být prováděno přímo v hlavním vlákně (UI vlákně).
Příklad:
// Obvyklá funkce
fun fetchDataBlocking(): String {
// Blokující síťový volání, může se zaseknout
Thread.sleep(2000)
return "Data přijata"
}
// Suspend funkce
suspend fun fetchDataNonBlocking(): String {
// Asynchronní síťové volání
// Korutina je zde pozastavena, vlákno není blokováno
delay(2000) // Příklad suspend funkce, která simuluje zpoždění
return "Data přijata asynchronně"
}
Suspend funkce jsou základem pro tvorbu snadno čitelného a udržovatelného asynchronního kódu s využitím korutin.