Junior — Middle
Kāda ir atšķirība starp asinhrono funkciju izmantošanu ar atslēgvārdu async un launch izsaukumu asinhronajā programmēšanas kontekstā?
sobes.tech AI
Atbilde no AI
Atslēgvārds async tiek izmantots asinhronas funkcijas deklarēšanai, kas atgriež objektu Deferred vai Job un var tikt pārtraukts ar iekšējām suspend funkcijām. Šādas funkcijas izsaukums nesāk to automātiski, bet atgriež atliktu rezultātu, ko var iegūt ar await.
launch ir funkcija, kas sāk jaunu korutinu un nekavējoties sāk tās izpildi. Tā atgriež Job objektu, ko var izmantot korutinas dzīves cikla pārvaldībai (piemēram, atceļot).
Piemērs:
suspend fun fetchData(): String {
delay(1000)
return "Dati"
}
fun main() = runBlocking {
// async atgriež Deferred, izpilde sākas nekavējoties
val deferred = async { fetchData() }
println("Veicu citu darbu")
val result = deferred.await() // gaida rezultātu
println(result)
// launch sāk korutinu, bet neatgriež rezultātu
val job = launch {
val data = fetchData()
println(data)
}
job.join() // gaida pabeigšanu
}
Kopsavilkums:
asynctiek izmantots, lai uzsāktu asinhronu operāciju ar rezultātu.launchuzsāk korutinu bez atgrieztās vērtības, fonu uzdevumiem.asyncatgriežDeferred,launch—Job.