Middle
Kotlin'da 'suspend' funksiyasi nima?
sobes.tech AI
AIdan javob
Suspend функция — буга, унинни тўхтатиш (suspend) ва кейинчалик қайта бошлаш (resume) мумкин бўлган функция. Улар Kotlinдаги корутинларнинг асосий қисми бўлиб, асинхрон операцияларни блокламасдан бажариш учун ишлатилади.
Асосий хусусиятлар:
- Бўлишича, фақат бошқа
suspendфункциясидан ёки корутин контекстида чақирилади. Компилятор бу чекловни таъминлайди. - Тўхтатмайди. Асинхрон операцияни (масалан, тармоқ сўрови) бажаришда,
suspendфункция корутинни тўхтатади, ва тўғри келганда, у қайтиб ишга тушади. - Тузилган параллелизм учун ишлатилади.
launchваasyncкаби функциялар билан бирга, асинхрон кодни оддий ва осон ўқиладиган услубда ёзиш имконини беради. - Компилятор
suspendфункцияларни охирги автоматларга айлантиради. Бу корутиннинг ҳолатини сақлашга ёрдам беради.
Misol:
import kotlinx.coroutines.*
suspend fun fetchData(): String {
// Асинхрон операцияни имитация қилиш (масалан, тармоқ сўрови)
delay(1000) // тўхтатиш нуқталари
return "Маълумот юкланди"
}
fun main() = runBlocking {
println("Юклашни бошлаймиз...")
val data = fetchData() // suspend функцияни чақириш
println(data)
println("Юклаш тугади")
}
Бу ерда, fetchData — suspend функция, у delay (бошқа бир suspend функцияси) билан имитация қилади. delay — тўхтатиш нуқтаси. runBlocking — корутин ҳудуди яратади, у mainни блокловчи тўрқинча қилиб ишга туширади, аммо унутмасдан, fetchData асинхрон равишда бажарилади.