Sobes.tech
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 typu T. Používá se, když je třeba získat výsledek asynchronní operace. Pro získání výsledku se volá funkce await(), 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().