Junior — Middle
Koja je razlika između funkcija Job i Deferred u kontekstu korutina?
sobes.tech АИ
Одговор од АИ
U Kotlinu, Job i Deferred su dva tipa zadataka koja predstavljaju asinhrone operacije, ali s različitim mogućnostima:
-
Job — osnovni je tip koji predstavlja zadatak bez rezultata. Omogućava kontrolu životnog ciklusa korutine: pokretanje, otkazivanje, praćenje stanja.
-
Deferred<T> — podklasa je
Jobkoja dodatno vraća rezultat tipaT. Koristi se kada je potrebno dobiti rezultat asinhrone operacije. Za dobijanje rezultata poziva se funkcijaawait(), koja zaustavlja izvršenje dok rezultat ne bude spreman.
Primer:
val job: Job = launch {
// izvršava neki posao bez rezultata
}
val deferred: Deferred<Int> = async {
// izvršava posao i vraća rezultat
42
}
runBlocking {
deferred.await() // dobija rezultat
}
Glavna razlika je što Job ne vraća rezultat, dok Deferred da i omogućava da se dobije putem await().