Middle
Kotlin-də 'suspend' funksiyası nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Suspend funksiyası — bu, to‘xtatiladigan (suspend) va keyinchalik davom ettiriladigan (resume) bo‘ladigan funksiyadir. Ular Kotlindagi korutinlarning asosiy qismidir va asinxron operatsiyalarni bloklamasdan bajarish uchun ishlatiladi.
Asosiy xususiyatlar:
- Faqat boshqa
suspendfunksiyasidan yoki korutina kontekstidan chaqirilishi mumkin. Kompilyator bu cheklovni ta'minlaydi. - Threadni bloklamaydi. Asinxron operatsiya (masalan, tarmoq so‘rovi) bajarilayotganda,
suspendfunksiyasi korutinaning bajarilishini to‘xtatadi, va threadni boshqa vazifalar uchun bo‘shatadi. Asinxron operatsiya tugagach, korutina o‘z joyidan davom etadi. - Strukturaviy parallelizm uchun ishlatiladi.
launchvaasynckabi funksiyalar bilan birga, asinxron kodni ketma-ket va oson o‘qiladigan tarzda yozishga imkon beradi. - Kompilyator
suspendfunksiyalarini oxirgi avtomatlarga aylantiradi. Bu korutinaning holatini to‘xtash nuqtalari o‘rtasida saqlash imkonini beradi.
Misol:
import kotlinx.coroutines.*
suspend fun fetchData(): String {
// Asinxron operatsiyaning imitatsiyasi (masalan, tarmoq so‘rovi)
delay(1000) // to‘xtash nuqtalari
return "Ma'lumotlar yuklandi"
}
fun main() = runBlocking {
println("Yuklashni boshlayapmiz...")
val data = fetchData() // suspend funksiyasini chaqirish
println(data)
println("Yuklash tugadi")
}
Bu yerda, fetchData — suspend funksiyasi bo‘lib, delay (yana bir suspend funksiyasi) yordamida kechikishni imitasiya qiladi. delay — to‘xtash nuqtasi. runBlocking esa, mainni bajarish uchun korutin doirasini yaratadi va ichida fetchData asinxron tarzda bajariladi.