Junior — Middle
Kuo skiriasi asinchroninių funkcijų naudojimas su raktu async nuo launch iškvietimo asinchroninio programavimo kontekste?
sobes.tech AI
Atsakymas iš AI
Raktinis žodis async naudojamas asinchroninės funkcijos deklaravimui, kuri grąžina objektą Deferred arba Job ir gali būti sustabdyta naudojant vidines suspend funkcijas. Tokios funkcijos kvietimas nesukelia jos automatinio paleidimo, o grąžina atidėtą rezultatą, kurį galima gauti naudojant await.
launch yra funkcija, kuri paleidžia naują korutiną ir iš karto pradeda jos vykdymą. Ji grąžina Job objektą, kurį galima naudoti korutinos gyvavimo ciklo valdymui (pavyzdžiui, atšaukti).
Pavyzdys:
suspend fun fetchData(): String {
delay(1000)
return "Duomenys"
}
fun main() = runBlocking {
// async grąžina Deferred, vykdymas prasideda iš karto
val deferred = async { fetchData() }
println("Atliekama kita užduotis")
val result = deferred.await() // laukiame rezultato
println(result)
// launch paleidžia korutiną, bet negrąžina rezultato
val job = launch {
val data = fetchData()
println(data)
}
job.join() // laukiame pabaigos
}
Santrauka:
asyncnaudojamas pradėti asinchroninę operaciją su rezultatu.launchpradeda korutiną be grąžinamos reikšmės, foniniams darbams.asyncgrąžinaDeferred,launch—Job.