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() |