Sobes.tech
Middle

Kotlinдеги 'suspend' функциясы эмне?

sobes.tech AI

AIден жооп

Suspend функциясы — бул токтотулуп (suspend) жана кийинкиде улантылуучу (resume) мүмкүн болгон функция. Алар Kotlinдеги корутиндердин негизги бөлүгү болуп саналат жана асинхрондук операцияларды блоктогон эмес аткаруу үчүн колдонулат.

Негизги өзгөчөлүктөрү:

  • Буларды башка suspend функциясынан же корутин контекстинен гана чакырса болот. Компилятор бул чектөөнү камсыздайт.
  • Жипти блоктогон эмес. Асинхрондук операцияны (мисалы, тармактык суроо-талап) аткарууда, suspend функция корутиндин иштешин токтотуп, жипти башка тапшырмалар үчүн бошотот. Асинхрондук операция аяктагандан кийин, корутин ошол жерден уланат, анда токтогон жерден.
  • Структураланган параллелизм үчүн колдонулат. launch жана async сыяктуу функциялар менен бирге, асинхрондук кодду бир катар, оңой окула турган стилиде жазууга мүмкүндүк берет.
  • Компилятор suspend функцияларын акыркы автоматтарга айлантат. Бул корутиндин абалын токтотуу пункттарынын ортосунда сактоого мүмкүндүк берет.

Мисал:

import kotlinx.coroutines.*

suspend fun fetchData(): String {
    // Асинхрондук операцияны имитациялоо (мисалы, тармактык суроо-талап)
    delay(1000) // токтотуу пункттары
    return "Деректер жүктөлдү"
}

fun main() = runBlocking {
    println("Жүктөө башталды...")
    val data = fetchData() // suspend функцияны чакыруу
    println(data)
    println("Жүктөө аяктады")
}

Бул жерде, fetchDatasuspend функциясы, ал delay (башка suspend функциясы) колдонуп, кечиктирүүнү имитациялайт. delay — токтотуу пункты. runBlockingmain ишин блоктогон корутин аянтчасын түзөт, бирок анын ичинде fetchData асинхрон түрдө ишке ашырылат.