Junior — Middle
Care este diferența dintre utilizarea funcțiilor asincrone cu cuvântul cheie async și apelarea launch în contextul programării asincrone?
sobes.tech AI
Răspuns de la AI
Cuvântul cheie async este folosit pentru a declara o funcție asincronă care returnează un obiect de tip Deferred sau Job și poate fi suspendat cu funcții suspend interne. Apelarea unei astfel de funcții nu o pornește automat, ci returnează un rezultat întârziat care poate fi obținut cu await.
launch este o funcție care pornește o nouă corutină și începe execuția acesteia imediat. Returnează un obiect Job, care poate fi folosit pentru a gestiona ciclul de viață al corutinei (de exemplu, anulare).
Exemplu:
suspend fun fetchData(): String {
delay(1000)
return "Date"
}
fun main() = runBlocking {
// async returnează un Deferred, execuția începe imediat
val deferred = async { fetchData() }
println("Fac altceva")
val result = deferred.await() // așteaptă rezultatul
println(result)
// launch pornește o corutină, dar nu returnează rezultat
val job = launch {
val data = fetchData()
println(data)
}
job.join() // așteaptă finalizarea
}
Rezumat:
asynceste folosit pentru a porni o operație asincronă cu rezultat.launchpornește o corutină fără valoare de întoarcere, pentru sarcini de fundal.asyncreturneazăDeferred,launch—Job.