Sobes.tech
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ə, JobDeferred 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ə olaraq T tipində nəticə qaytarır. Asinxron əməliyyatın nəticəsini almaq üçün istifadə olunur. Nəticəni almaq üçün await() 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.