Junior — Middle
Korutinalar kontekstida Job va Deferred funksiyalari orasidagi farq nima?
sobes.tech AI
AIdan javob
Kotlin'da, Job va Deferred ikki turdagi vazifalar bo'lib, ular asinxron operatsiyalarni ifodalaydi, ammo turli imkoniyatlarga ega:
-
Job — bu asosiy tur bo'lib, natija qaytarmaydigan vazifani ifodalaydi. U korutinaning hayot aylanishini boshqarishga imkon beradi: ishga tushirish, bekor qilish, holatini kuzatish.
-
Deferred<T> — bu
Jobning voris sinfi bo'lib, qo'shimcha ravishdaTturidagi natijani qaytaradi. U asinxron operatsiyaning natijasini olish uchun ishlatiladi. Natijani olish uchunawait()funksiyasi chaqiriladi, bu bajarilishni natija tayyor bo'lguncha to'xtatadi.
Misol:
val job: Job = launch {
// natijasiz ish bajarish
}
val deferred: Deferred<Int> = async {
// ish bajarish va natija qaytarish
42
}
runBlocking {
deferred.await() // natijani olish
}
Shunday qilib, asosiy farq shundaki, Job natija qaytarmaydi, Deferred esa qaytaradi va uni await() orqali olish mumkin.