Middle
Kotlin-də launch və async/await arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
launch korutinasını işə salır, bu da işi yerinə yetirir və nəticə qaytarmır. Bu, bloklayıcı gözləmə tələb etməyən tapşırıqlar üçün nəzərdə tutulmuşdur.
async korutinasını işə salır, bu da işi yerinə yetirir və Deferred<T> tipində nəticə qaytarır. Nəticəni almaq üçün await() istifadə olunur, bu da cari korutinanı asinxron tapşırıq tamamlanana qədər dayandırır. async/await asinxron əməliyyatın nəticəsini almaq lazım olduqda istifadə olunur.
İstifadə nümunəsi:
// launch - geri dönüş dəyəri olmadan
fun doSomethingAsync() = GlobalScope.launch {
delay(1000)
println("İş tamamlandı")
}
// async/await - geri dönüş dəyəri ilə
suspend fun calculateSomethingAsync(): Int = GlobalScope.async {
delay(1000)
42
}.await()
suspend fun main() {
doSomethingAsync()
val result = calculateSomethingAsync()
println("Nəticə: $result")
}
Fərqlərin ümumi cədvəli:
| Xüsusiyyət | launch | async/await |
|---|---|---|
| Geri dönüş tipi | Job | Deferred<T> |
| Gözləmə | Bloklamır (fire and forget) | Nəticə üçün await() tələb edir |
| İstifadə | Nəticə tələb etməyən tapşırıqları başlatmaq üçün | Nəticəsi lazım olan tapşırıqları başlatmaq üçün |
| Xətaların idarə olunması | CoroutineExceptionHandler vasitəsilə | await() çağırışında try-catch ilə |