Junior — Middle
Koja je razlika između korišćenja asinhronih funkcija sa ključnom reči async i poziva launch u kontekstu asinhronog programiranja?
sobes.tech АИ
Одговор од АИ
Ključna riječ async koristi se za deklarisanje asinhrone funkcije koja vraća objekat tipa Deferred ili Job i može biti suspendovana pomoću unutrašnjih funkcija suspend. Poziv takve funkcije ne pokreće je automatski, već vraća odloženi rezultat koji se može dobiti pomoću await.
launch je funkcija koja pokreće novu korutinu i odmah započinje njeno izvršavanje. Ona vraća objekat Job, koji se može koristiti za upravljanje životnim ciklusom korutine (na primer, otkazivanje).
Primer:
suspend fun fetchData(): String {
delay(1000)
return "Podaci"
}
fun main() = runBlocking {
// async vraća Deferred, izvršenje počinje odmah
val deferred = async { fetchData() }
println("Obavljam drugi posao")
val result = deferred.await() // čekanje rezultata
println(result)
// launch pokreće korutinu, ali ne vraća rezultat
val job = launch {
val data = fetchData()
println(data)
}
job.join() // čekanje završetka
}
Rezime:
asyncse koristi za pokretanje asinhrone operacije sa rezultatom.launchpokreće korutinu bez povratne vrednosti, za pozadinske zadatke.asyncvraćaDeferred,launch—Job.