Sobes.tech
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ça T görnüşinde netijäni yzyna berýär. Asynkron operasiýanyň netijesini almak üçin ulanylýar. Netijäni almak üçin await() 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.