Middle
Android uygulamaları geliştirmek için kullanılan programlama dilinde async ve await yapıları nasıl çalışır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kotlin'de, Android geliştirme için kullanılan async ve await, coroutine kütüphanesinden fonksiyonlardır. Bunlar dilin anahtar kelimeleri değildir, bazı diğer dillerde olduğu gibi.
async, yeni bir coroutine başlatır ve gelecekteki sonuçları temsil eden Deferred türünde bir nesne döner. async'i çağıran coroutine, başlatılan asenkron işlemin tamamlanmasını beklemeden çalışmasına devam eder.
await, bir Deferred nesnesi üzerinde çağrılan bir suspending fonksiyondur. Bu, async ile başlatılan asenkron işlemi tamamlayana kadar mevcut coroutine'in yürütülmesini durdurur ve sonucunu döner. Sonuç zaten mevcutsa, await hemen döner.
Sözdizimi:
import kotlinx.coroutines.*
suspend fun fetchUserData(): String {
// Uzun süren bir işlemin simülasyonu
delay(1000)
return "Kullanıcı Verisi"
}
suspend fun processData(data: String): String {
// Başka bir uzun süren işlemin simülasyonu
delay(2000)
return "İşlenmiş: $data"
}
suspend fun main() {
val deferredData = CoroutineScope(Dispatchers.IO).async {
// Asenkron veri alımı
fetchUserData()
}
// Veriler yüklenirken başka işler yapabiliriz
val data = deferredData.await() // fetchUserData()'nin tamamlanmasını bekle
val processedResult = withContext(Dispatchers.Default) {
// Veriyi işleme, muhtemelen başka bir iş parçacığında
processData(data)
}
println(processedResult) // "İşlenmiş: Kullanıcı Verisi" sonucu, gecikmelerden sonra yazdırılır
}
Anahtar noktalar:
async, sonucu temsil edenDeferreddöner.await, çağıran coroutine'i durduran suspending bir fonksiyondur.- Non-bloklayıcı asenkron işlemler için coroutine bağlamında kullanılır.
- Birden fazla asenkron görevi paralel olarak yürütmeye ve sonuçlarını toplamaya olanak tanır.