Junior — Middle
Milline on erinevus Job ja Deferred funktsioonide vahel korutinide kontekstis?
sobes.tech AI
Vastus AI-lt
Kotlinis on Job ja Deferred kaks tüüpi ülesandeid, mis esindavad asünkroonseid operatsioone, kuid erinevate võimalustega:
-
Job — see on põhityüp, mis esindab ülesannet ilma tagastatava tulemusega. See võimaldab kontrollida korutina elutsüklit: käivitada, tühistada, jälgida olekut.
-
Deferred<T> — see on
Jobalamklass, mis lisaks tagastab tulemuse tüüpiT. Seda kasutatakse, kui on vaja saada asünkroonse operatsiooni tulemust. Tulemust saab küsida funktsiooniawait(), mis peatab täitmise kuni tulemus on valmis.
Näide:
val job: Job = launch {
// teostab mingit tööd ilma tulemusega
}
val deferred: Deferred<Int> = async {
// teostab tööd ja tagastab tulemuse
42
}
runBlocking {
deferred.await() // saab tulemuse
}
Peamine erinevus on see, et Job ei taga tulemust, samas kui Deferred — annab ja võimaldab seda await() kaudu saada.