Junior — Middle
როგორ ახერხებ Tasks-ის შესრულებას Coroutines-ში?
sobes.tech AI
პასუხი AI-სგან
Kotlin Coroutines-ში დავალებებს შეიძლება რამდენიმე გზით შეასრულოს:
-
launch — იწყებს ახალ coroutine-ს, რომელიც პარალელურად მუშაობს და შედეგს არ აბრუნებს. გამოიყენება ფონურ დავალებებში, სადაც შედეგი საჭირო არ არის.
-
async — იწყებს coroutine-ს, რომელიც აბრუნებს შედეგს Deferred-ის სახით, რაც საშუალებას იძლევა მიიღოთ შედეგი await()-ის საშუალებით. შესაფერისია პარალელური გამოთვლებისთვის, სადაც შედეგი საჭიროა.
-
runBlocking — ბლოკავს მიმდინარე ნაკადს, სანამ coroutine არ დასრულდება, და ხშირად გამოიყენება main ფუნქციებში ან ტესტებში.
-
withContext — იცვლის შესრულების კონტექსტს (მაგალითად, Dispatchers.IO-სთვის შესასვლელი/გამავალი ოპერაციებისათვის) და ასრულებს კოდის ბლოკს, აბრუნებს შედეგს.
მაგალითი:
import kotlinx.coroutines.*
fun main() = runBlocking {
launch {
delay(1000)
println("launch-ის დავალება")
}
val result = async {
delay(500)
42
}
println("async-ის შედეგი: ${result.await()}")
}