Sobes.tech
Middle

Wat is het verschil tussen launch en async/await in Kotlin?

sobes.tech AI

Antwoord van AI

launch start een coroutine die werk uitvoert en geen resultaat teruggeeft. Het is bedoeld voor taken die geen blokkerende wacht op voltooiing vereisen.

async start een coroutine die werk uitvoert en een resultaat van het type Deferred<T> teruggeeft. Om het resultaat te verkrijgen, wordt await() gebruikt, dat de huidige coroutine onderbreekt tot de asynchrone taak is voltooid. async/await worden gebruikt wanneer het resultaat van een asynchrone operatie nodig is.

Voorbeeld van gebruik:

// launch - zonder returnwaarde
fun doSomethingAsync() = GlobalScope.launch {
    delay(1000)
    println("Werk voltooid")
}

// async/await - met returnwaarde
suspend fun calculateSomethingAsync(): Int = GlobalScope.async {
    delay(1000)
    42
}.await()

suspend fun main() {
    doSomethingAsync()

    val result = calculateSomethingAsync()
    println("Resultaat: $result")
}

Vergelijkingstabel van verschillen:

Kenmerk launch async/await
Terugkeer type Job Deferred<T>
Wachten Vertraagt niet (fire and forget) Vereist await() voor blokkerend wachten op resultaat
Gebruik Voor het starten van taken die geen resultaat vereisen Voor het starten van taken waarvan het resultaat nodig is voor verdere logica
Foutafhandeling Via CoroutineExceptionHandler Via try-catch bij het aanroepen van await()