Middle
Kotlin'da launch va async/await o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
launch korutinasini ishga tushiradi, u ishni bajaradi va natijani qaytarmaydi. Bu blokirovchi kutishni talab qilmaydigan vazifalar uchun mo'ljallangan.
async korutinasini ishga tushiradi, u ishni bajaradi va Deferred<T> turidagi natijani qaytaradi. Natijani olish uchun await() ishlatiladi, bu hozirgi korutinaning asinxron vazifa tugaguncha to'xtashini ta'minlaydi. async/await asinxron operatsiyaning natijasini olish zarur bo'lsa ishlatiladi.
Foydalanish misoli:
// launch - hech qanday natija bilan
fun doSomethingAsync() = GlobalScope.launch {
delay(1000)
println("Ish bajarildi")
}
// async/await - natija bilan
suspend fun calculateSomethingAsync(): Int = GlobalScope.async {
delay(1000)
42
}.await()
suspend fun main() {
doSomethingAsync()
val result = calculateSomethingAsync()
println("Natija: $result")
}
Farqlar jadvali:
| Xususiyat | launch | async/await |
|---|---|---|
| Qaytish turi | Job | Deferred<T> |
| Kutish | Bloklamaydi (fire and forget) | Natijani kutish uchun await() talab qilinadi |
| Foydalanish | Natija qaytarmaydigan vazifalarni boshlash uchun | Natijasi keyingi logika uchun zarur bo'lgan vazifalarni boshlash uchun |
| Xatoliklarni boshqarish | CoroutineExceptionHandler orqali | await() chaqirilganda try-catch orqali |