Sobes.tech
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:

  • async wordt gebruikt om een asynchrone operatie met resultaat te starten.
  • launch start een coroutine zonder terugkerende waarde, voor achtergrondtaken.
  • async geeft Deferred terug, launchJob.