Junior — Middle
Aký je rozdiel medzi funkciami Job a Deferred v kontexte korutín?
sobes.tech AI
Odpoveď od AI
V Kotlinu sú Job a Deferred dva typy úloh, ktoré predstavujú asynchrónne operácie, ale s rôznymi možnosťami:
-
Job — je základný typ, ktorý predstavuje úlohu bez návratového výsledku. Umožňuje riadiť životný cyklus coroutine: spustiť, zrušiť, sledovať stav.
-
Deferred<T> — je podtrieda
Job, ktorá navyše vracia výsledok typuT. Používa sa, keď je potrebné získať výsledok asynchrónnej operácie. Na získanie výsledku sa volá funkciaawait(), ktorá pozastaví vykonávanie, kým nie je výsledok pripravený.
Príklad:
val job: Job = launch {
// vykonáva nejakú prácu bez výsledku
}
val deferred: Deferred<Int> = async {
// vykonáva prácu a vracia výsledok
42
}
runBlocking {
deferred.await() // získať výsledok
}
Hlavný rozdiel je, že Job nevracia výsledok, zatiaľ čo Deferred áno a umožňuje ho získať cez await().