Sobes.tech
Junior — Middle

Wat is het verschil tussen de functies Job en Deferred in de context van coroutines?

sobes.tech AI

Antwoord van AI

In Kotlin zijn Job en Deferred twee soorten taken die asynchrone operaties vertegenwoordigen, maar met verschillende mogelijkheden:

  • Job — is een basistype dat een taak zonder terugkerend resultaat voorstelt. Het stelt je in staat de levenscyclus van de coroutine te controleren: starten, annuleren, status volgen.

  • Deferred<T> — is een subklasse van Job die daarnaast een resultaat van type T retourneert. Het wordt gebruikt wanneer je het resultaat van een asynchrone operatie wilt krijgen. Om het resultaat te verkrijgen, wordt de functie await() aangeroepen, die de uitvoering onderbreekt totdat het resultaat klaar is.

Voorbeeld:

val job: Job = launch {
    // voert een taak uit zonder resultaat
}

val deferred: Deferred<Int> = async {
    // voert een taak uit en geeft een resultaat terug
    42
}

runBlocking {
    deferred.await() // krijgt het resultaat
}

De belangrijkste verschil is dat Job geen resultaat teruggeeft, terwijl Deferred dat wel doet en het via await() kan worden verkregen.