Junior — Middle
Korutinlər kontekstində Job və Deferred funksiyaları arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin-də, Job və Deferred iki növ tapşırıqdır və asinxron əməliyyatları təmsil edir, lakin fərqli imkanlara malikdir:
-
Job — geri dönüş nəticəsi olmayan tapşırığı təmsil edən əsas növ. O, korutinanın həyat dövrünü idarə etməyə imkan verir: başlatmaq, ləğv etmək, vəziyyətini izləmək.
-
Deferred<T> —
Job-un alt sinfi olub, əlavə olaraqTtipində nəticə qaytarır. Asinxron əməliyyatın nəticəsini almaq üçün istifadə olunur. Nəticəni almaq üçünawait()funksiyası çağırılır, bu da icraatı nəticə hazır olana qədər dayandırır.
Nümunə:
val job: Job = launch {
// nəticəsiz iş yerinə yetirir
}
val deferred: Deferred<Int> = async {
// iş yerinə yetirir və nəticə qaytarır
42
}
runBlocking {
deferred.await() // nəticəni alır
}
Əsas fərq odur ki, Job nəticə qaytarmır, Deferred isə qaytarır və onu await() vasitəsilə əldə etmək mümkündür.