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

  • async este folosit pentru a porni o operație asincronă cu rezultat.
  • launch pornește o corutină fără valoare de întoarcere, pentru sarcini de fundal.
  • async returnează Deferred, launchJob.