Junior — Middle
რას წარმოადგენს ასინქრონული ფუნქციების გამოყენება with the async გასაღებით და launch-ის გამოძახება ასინქრონული პროგრამირების კონტექსტში?
sobes.tech AI
პასუხი AI-სგან
async საკვანძო სიტყვა გამოიყენება ასინქრონული ფუნქციის გამოცხადებისთვის, რომელიც აბრუნებს Deferred ან Job ტიპის ობიექტს და შეიძლება იყოს შეჩერებული შიდა suspend ფუნქციების საშუალებით. ასეთი ფუნქციის გამოძახება არ იწყებს მას ავტომატურად, არამედ აბრუნებს გადადებულ შედეგს, რომელიც შეიძლება მიიღოს await-ის საშუალებით.
launch არის ფუნქცია, რომელიც იწყებს ახალ კორუტინას და დაუყოვნებლივ იწყებს მის შესრულებას. ის აბრუნებს Job ობიექტს, რომელიც შეიძლება გამოყენებულ იქნას კორუტინას ციკლის მართვისთვის (მაგალითად, გაუქმებისთვის).
მაგალითი:
suspend fun fetchData(): String {
delay(1000)
return "მონაცემები"
}
fun main() = runBlocking {
// async აბრუნებს Deferred-ს, შესრულება იწყება დაუყოვნებლივ
val deferred = async { fetchData() }
println("სხვა სამუშაოს კეთება")
val result = deferred.await() // ველით შედეგს
println(result)
// launch იწყებს კორუტინას, მაგრამ არ აბრუნებს შედეგს
val job = launch {
val data = fetchData()
println(data)
}
job.join() // ველით დასრულებას
}
საჯამო:
asyncგამოიყენება ასინქრონული ოპერაციის დაწყებისთვის, რომელიც შედეგს აბრუნებს.launchიწყებს შედეგის გარეშე კორუტინას, ფონის დავალებებისთვის.asyncაბრუნებსDeferred,launch—Job.