Middle
Mis on suspend-funktsioon Kotlinis?
sobes.tech AI
Vastus AI-lt
Suspend-funktsioon on Kotlinis funktsioon, mida saab "peatada" (suspend) ja hiljem "taas alustada" (resume). Seda kasutatakse asünkroonse, mitte-blokeeriva koodi kirjutamiseks imperatiivses stiilis, mis lihtsustab pikaajaliste operatsioonide, nagu võrgupäringud või andmebaasi operatsioonid, haldamist.
Peamised suspend-funktsioonide omadused:
- Muudatus
suspend: Deklareeritakse võtmesõnagasuspendfunktsiooni nime ees. - Töö korutüünidega: Neid kutsutakse välja ainult teistest suspend-funktsioonidest või korutüünide ehitajatest (näiteks
launch,async). - Mitte-blokeeriv olemus: Suspend-funktsiooni peatamine ei blokeeri selle täitmisel olevat niiti. Selle asemel vabastab niidi teiste ülesannete täitmiseks ning kui asünkroonse operatsiooni tulemus on valmis, jätkub funktsiooni täitmine peatamise kohast.
- Selge märgistus: Muutja
suspendnäitab selgelt, et selle funktsiooni väljakutse võib olla pikaajaline operatsioon ning seda ei tohiks otse teha peamise niidiga (UI-niidiga).
Näide:
// Tavaline funktsioon
fun fetchDataBlocking(): String {
// Blokeeriv võrgupäring, võib jääda seisma
Thread.sleep(2000)
return "Andmed on saadud"
}
// Suspend-funktsioon
suspend fun fetchDataNonBlocking(): String {
// Asünkroonne võrgupäring
// Korutüün peatub siin, niit ei blokeeru
delay(2000) // Näide suspend-funktsioonist, mis simuleerib viivitust
return "Andmed saadud asünkroonselt"
}
Suspend-funktsioonid on aluseks kergesti loetava ja hooldatava asünkroonse koodi koostamisel korutüünide abil.