Junior — Middle
Корутиндердин контекстинде Job жана Deferred функцияларынын айырмасы эмнеде?
sobes.tech AI
AIден жооп
Kotlin'de, Job we Deferred iki görnüşli wezipeler bolup, olar asynkron operasiýalary görkezýär, ýöne dürli mümkinçiliklere eýe:
-
Job — bu esas görnüş bolup, netijesiz wezipäni görkezýär. Ol korutinaň durmuş dövrüni dolandyrmaga mümkinçilik berýär: başlatmak, ýatyrmak, ýagdaýyny yzarlamak.
-
Deferred<T> — bu
Job-uň alt synpy bolup, goşmaçaTgörnüşinde netijäni yzyna berýär. Asynkron operasiýanyň netijesini almak üçin ulanylýar. Netijäni almak üçinawait()funksiýasy çagyrylýar, ol ýerine ýetirmäni netijä taýýar bolýança togtadýar.
Mysal:
val job: Job = launch {
// netijesiz iş ýerine ýetirilýär
}
val deferred: Deferred<Int> = async {
// iş ýerine ýetirýär we netijäni yzyna berýär
42
}
runBlocking {
deferred.await() // netijäni alýar
}
Esasy tapawut, Job netijäni yzyna bermän, Deferred — berýär we await() arkaly almak bolýar.