Middle
Android колдонмолорун иштеп чыгууда колдонулган программалоо тилиндеги async жана await курулмалары кандай иштейт?
sobes.tech AI
AIден жооп
Kotlinде, ал Android өнүктүрүү үчүн колдонулган, async жана await — бул корутин китепканасынан алынган функциялар. Алар тилдин ачкыч сөздөрү эмес, башка тилдерде кандайдыр бир мааниге ээ.
async жаңы корутинди фондук режимде иштетет жана Deferred түрүндөгү объектти кайтарат, ал болочоктогу аткаруу натыйжасын көрсөтөт. async чакырган корутина өз ишин улантат, ишке ашырылган асинхрондук операциянын аяктоосун күтпөй.
await — бул Deferred объектинде чакырылган токтотуучу функция. Ал учурдагы корутиндин аткарылышын токтотот, анткени async аркылуу ишке ашырылган асинхрондук операция аяктап, өзүнүн натыйжасын кайтарганга чейин. Эгер натыйжа жеткиликтүү болсо, await аны дароо кайтарат.
Синтаксис:
import kotlinx.coroutines.*
suspend fun fetchUserData(): String {
// Узун операцияны имитациялоо
delay(1000)
return "User Data"
}
suspend fun processData(data: String): String {
// Башка узун операцияны имитациялоо
delay(2000)
return "Processed: $data"
}
suspend fun main() {
val deferredData = CoroutineScope(Dispatchers.IO).async {
// Асинхрондуу маалымат алуу
fetchUserData()
}
// Башка ишти аткарса болот, маалыматтар жүктөлүп жатканда
val data = deferredData.await() // fetchUserData() аякташын күтүп жатабыз
val processedResult = withContext(Dispatchers.Default) {
// Маалыматты иштетүү, мүмкүн башка жипте
processData(data)
}
println(processedResult) // "Processed: User Data" деп чыгат, кечиккенден кийин
}
Негизги учурлар:
asyncDeferredкайтарат, ал "убада" натыйжаны убада кылат.await— токтотуучу функция жана чакырган корутинди токтотот.- Корутиндердин контекстинде колдонулат, блоктогон эмес асинхрондук операциялар үчүн.
- Бир нече асинхрондук тапшырмаларды параллелдүү аткарып, алардын натыйжаларын чогултуу мүмкүнчүлүгүн берет.