Junior — Middle
Jaký je rozdíl mezi použitím asynchronních funkcí s klíčovým slovem async a voláním launch v kontextu asynchronního programování?
sobes.tech AI
Odpověď od AI
Klíčové slovo async se používá k deklaraci asynchronní funkce, která vrací objekt typu Deferred nebo Job a může být pozastavena pomocí vnitřních funkcí suspend. Volání takové funkce ji nespustí automaticky, ale vrací odložený výsledek, který lze získat pomocí await.
launch je funkce, která spouští novou korutinu a ihned začíná její provádění. Vrací objekt Job, který lze použít k řízení životního cyklu korutiny (například zrušení).
Příklad:
suspend fun fetchData(): String {
delay(1000)
return "Data"
}
fun main() = runBlocking {
// async vrací Deferred, provádění začíná ihned
val deferred = async { fetchData() }
println("Dělám jinou práci")
val result = deferred.await() // čeká na výsledek
println(result)
// launch spouští korutinu, ale nevrací výsledek
val job = launch {
val data = fetchData()
println(data)
}
job.join() // čeká na dokončení
}
Shrnutí:
asyncse používá k spuštění asynchronní operace s výsledkem.launchspouští korutinu bez návratové hodnoty, pro úlohy na pozadí.asyncvracíDeferred,launch—Job.