Junior — Middle
Wat is het verschil tussen het gebruik van asynchrone functies met het sleutelwoord async en het aanroepen van launch in de context van asynchrone programmeren?
sobes.tech AI
Antwoord van AI
Het sleutelwoord async wordt gebruikt om een asynchrone functie te declareren die een object van het type Deferred of Job retourneert en intern kan worden gepauzeerd met suspend functies. Het aanroepen van zo'n functie start deze niet automatisch, maar geeft een uitgestelde resultaat dat met await kan worden verkregen.
launch is een functie die een nieuwe coroutine start en deze onmiddellijk laat uitvoeren. Het retourneert een Job object dat kan worden gebruikt om de levenscyclus van de coroutine te beheren (bijvoorbeeld annuleren).
Voorbeeld:
suspend fun fetchData(): String {
delay(1000)
return "Data"
}
fun main() = runBlocking {
// async retourneert een Deferred, uitvoering begint onmiddellijk
val deferred = async { fetchData() }
println("Andere werkzaamheden")
val result = deferred.await() // wacht op resultaat
println(result)
// launch start een coroutine, maar geeft geen resultaat
val job = launch {
val data = fetchData()
println(data)
}
job.join() // wacht tot het klaar is
}
Samenvatting:
asyncwordt gebruikt om een asynchrone operatie met resultaat te starten.launchstart een coroutine zonder terugkerende waarde, voor achtergrondtaken.asyncgeeftDeferredterug,launch—Job.