Middle
Kotlin-ში launch და async/await-ს შორის რა განსხვავებაა?
sobes.tech AI
პასუხი AI-სგან
launch корутинаны ишке киргизет, ал ишти аткарып, натыйжаны кайтарбайт. Ал блоктогон күтүүнү талап кылбаган тапшырмалар үчүн арналган.
async корутинаны ишке киргизет, ал ишти аткарып, Deferred<T> түрүндөгү натыйжаны кайтарат. Натыйжаны алуу үчүн await() колдонулат, ал учурдагы корутинаны асинхрон иш аяктагандан кийин токтотот. async/await асинхрон операциянын натыйжасын алуу керек болгондо колдонулат.
Колдонуу мисалы:
// launch - кайтарымсыз
fun doSomethingAsync() = GlobalScope.launch {
delay(1000)
println("Иш аяктады")
}
// async/await - кайтарым менен
suspend fun calculateSomethingAsync(): Int = GlobalScope.async {
delay(1000)
42
}.await()
suspend fun main() {
doSomethingAsync()
val result = calculateSomethingAsync()
println("Натыйжа: $result")
}
Аермалардын салыштырма таблицасы:
| Өзгөчөлүк | launch | async/await |
|---|---|---|
| Врста кайтаруу | Job | Deferred<T> |
| Күтүү | Блоктогон эмес (fire and forget) | Натыйжаны күтүү үчүн await() талап кылынат |
| Колдонуу | Натыйжа кайтарбаган тапшырмаларды ишке киргизүү үчүн | Натыйжасы керек болгон тапшырмаларды ишке киргизүү үчүн |
| Катуу ката менен иштөө | CoroutineExceptionHandler аркылуу | try-catch аркылуу await() чакырганда |