Sobes.tech
Junior — Middle

Asenkron programlama bağlamında, async anahtar kelimesiyle asenkron fonksiyonların kullanımı ile launch çağrısı arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

async anahtar kelimesi, Deferred veya Job türünde bir nesne döndüren ve içindeki suspend fonksiyonlar kullanılarak askıya alınabilen asenkron bir fonksiyon bildirmek için kullanılır. Böyle bir fonksiyon çağrısı otomatik olarak çalıştırılmaz, bunun yerine await ile alınabilecek ertelenmiş bir sonuç döner.

launch ise yeni bir coroutine başlatan ve hemen çalışmaya başlayan bir fonksiyondur. Bu, coroutine'in yaşam döngüsünü yönetmek için kullanılabilecek bir Job nesnesi döner (örneğin, iptal etmek için).

Örnek:

suspend fun fetchData(): String {
    delay(1000)
    return "Veri"
}

fun main() = runBlocking {
    // async, Deferred döner, çalışmaya hemen başlar
    val deferred = async { fetchData() }
    println("Başka işler yapılıyor")
    val result = deferred.await() // sonucu bekle
    println(result)

    // launch, coroutine başlatır ama sonuç döndürmez
    val job = launch {
        val data = fetchData()
        println(data)
    }
    job.join() // tamamlanmasını bekle
}

Özetle:

  • async, sonuç döndüren asenkron bir işlemi başlatmak için kullanılır.
  • launch, arka plan görevleri için sonuç döndürmeyen bir coroutine başlatır.
  • async Deferred, launch ise Job döner.