Middle
Ինչպես են աշխատում async և await կառուցվածքները Android ծրագրավորման լեզվում, որը օգտագործվում է հավելվածներ ստեղծելու համար։
sobes.tech AI
Պատասխան AI-ից
Kotlin- ում, որը օգտագործվում է Android զարգացման համար, async և await գործառույթներ են կուռտիների գրադարանի։ Դրանք լեզվի հիմնական բառեր չեն, ինչպես որոշ այլ լեզուներում։
async սկսում է նոր կուռտինա ֆոնային ռեժիմում և վերադարձնում է Deferred տիպի օբյեկտ, որը ներկայացնում է կատարման արդյունքը ապագայում։ async-ը կանչող կուռտինան շարունակում է իր աշխատանքը՝ սպասելու առանց սկսված ասինխրոն գործողության ավարտին։
await suspending գործառույթ է, որը կանչվում է Deferred օբյեկտի վրա։ Այն կանգնեցնում է ընթացիկ կուռտինայի կատարմանը մինչև async-ով սկսված ասինխրոն գործողությունը ավարտվի և արդյունքը վերադարձվի։ Եթե արդյունքը արդեն հասանելի է, await-ը այն անմիջապես վերադարձնում է։
Սինտաքսիս՝
import kotlinx.coroutines.*
suspend fun fetchUserData(): String {
// Երկարատև գործողության իմիտացիա
delay(1000)
return "Օգտագործողի տվյալներ"
}
suspend fun processData(data: String): String {
// Այլ երկարատև գործողության իմիտացիա
delay(2000)
return "Տվյալների մշակվածը՝ $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) // Տպում է "Տվյալների մշակվածը՝ Օգտագործողի տվյալներ"՝ ուշացումներից հետո
}
Հիմնական կետեր՝
asyncվերադարձնում էDeferred, որը՝ "խոստում" արդյունքի մասին։awaitsuspending գործառույթ է, որը կանգնեցնում է կանչող կուռտինան։- Օգտագործվում է կուռտիների կոնտեքստում՝ ոչ բլոկավոր ասինխրոն գործողությունների համար։
- Позволяет выполнять несколько асинхронных задач параллельно и собирать их результаты.