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 |