Junior — Middle
Aký je rozdiel medzi používaním asynchrónnych funkcií s kľúčovým slovom async a volaním launch v kontexte asynchrónneho programovania?
sobes.tech AI
Odpoveď od AI
Kľúčové slovo async sa používa na deklaráciu asynchrónnej funkcie, ktorá vracia objekt typu Deferred alebo Job a môže byť pozastavená pomocou vnútorných funkcií suspend. Volanie takejto funkcie ju nespustí automaticky, ale vráti odložený výsledok, ktorý je možné získať pomocou await.
launch je funkcia, ktorá spúšťa novú korutinu a okamžite začína jej vykonávanie. Vráti objekt Job, ktorý možno použiť na riadenie životného cyklu korutiny (napríklad zrušenie).
Príklad:
suspend fun fetchData(): String {
delay(1000)
return "Dáta"
}
fun main() = runBlocking {
// async vracia Deferred, vykonávanie začína okamžite
val deferred = async { fetchData() }
println("Robím inú prácu")
val result = deferred.await() // čaká na výsledok
println(result)
// launch spúšťa korutinu, ale nevracia výsledok
val job = launch {
val data = fetchData()
println(data)
}
job.join() // čaká na ukončenie
}
Zhrnutie:
asyncsa používa na spustenie asynchrónnej operácie s výsledkom.launchspúšťa korutinu bez návratovej hodnoty, pre úlohy na pozadí.asyncvraciaDeferred,launch—Job.