Sobes.tech
Middle

Kotlin'de launch ve async/await arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

launch bir coroutine başlatır, bu da işi yapar ve sonuç döndürmez. Bu, engelleyici bekleme gerektirmeyen görevler için tasarlanmıştır.

async bir coroutine başlatır, bu da işi yapar ve Deferred<T> türünde bir sonuç döndürür. Sonucu almak için await() kullanılır, bu da mevcut coroutine'i asenkron görevin tamamlanana kadar askıya alır. async/await, asenkron bir işlemin sonucunu almak gerektiğinde kullanılır.

Kullanım örneği:

// launch - dönüş değeri yok
fun doSomethingAsync() = GlobalScope.launch {
    delay(1000)
    println("İş tamamlandı")
}

// async/await - dönüş değeri ile
suspend fun calculateSomethingAsync(): Int = GlobalScope.async {
    delay(1000)
    42
}.await()

suspend fun main() {
    doSomethingAsync()

    val result = calculateSomethingAsync()
    println("Sonuç: $result")
}

Farklılıkların özet tablosu:

Özellik launch async/await
Dönüş tipi Job Deferred<T>
Bekleme Engellemez (fire and forget) Sonuç için await() gereklidir, engelleyici bekleme
Kullanım Sonuç döndürmeyen görevleri başlatmak için Sonucu gerektiren görevleri başlatmak için
Hata işleme CoroutineExceptionHandler aracılığıyla await() çağrısı sırasında try-catch ile