Junior — Middle
Jaký je rozdíl mezi funkcemi Job a Deferred v kontextu korutin?
sobes.tech AI
Odpověď od AI
V Kotlinu jsou Job a Deferred dva typy úkolů, které představují asynchronní operace, ale s různými možnostmi:
-
Job — je základní typ, který představuje úkol bez návratového výsledku. Umožňuje řídit životní cyklus korutiny: spustit, zrušit, sledovat stav.
-
Deferred<T> — je podtřída
Job, která navíc vrací výsledek typuT. Používá se, když je třeba získat výsledek asynchronní operace. Pro získání výsledku se volá funkceawait(), která pozastaví provádění, dokud není výsledek připraven.
Příklad:
val job: Job = launch {
// provádí nějakou práci bez výsledku
}
val deferred: Deferred<Int> = async {
// provádí práci a vrací výsledek
42
}
runBlocking {
deferred.await() // získá výsledek
}
Hlavní rozdíl je, že Job nevrací výsledek, zatímco Deferred ano a umožňuje jej získat přes await().