Junior — Middle
Czym różni się użycie funkcji asynchronicznych z słowem kluczowym async od wywołania launch w kontekście programowania asynchronicznego?
sobes.tech AI
Odpowiedź od AI
Słowo kluczowe async jest używane do deklarowania funkcji asynchronicznej, która zwraca obiekt typu Deferred lub Job i może być zawieszona za pomocą funkcji suspend wewnątrz. Wywołanie takiej funkcji nie uruchamia jej automatycznie, lecz zwraca odłożony wynik, który można uzyskać za pomocą await.
launch to funkcja, która uruchamia nową korutynę i natychmiast zaczyna jej wykonywanie. Zwraca obiekt Job, który można użyć do zarządzania cyklem życia korutyny (np. anulowania).
Przykład:
suspend fun fetchData(): String {
delay(1000)
return "Dane"
}
fun main() = runBlocking {
// async zwraca Deferred, wykonanie zaczyna się od razu
val deferred = async { fetchData() }
println("Inne zadanie")
val result = deferred.await() // czekanie na wynik
println(result)
// launch uruchamia korutynę, ale nie zwraca wyniku
val job = launch {
val data = fetchData()
println(data)
}
job.join() // czekanie na zakończenie
}
Podsumowując:
asyncsłuży do uruchomienia operacji asynchronicznej z wynikiem.launchuruchamia korutynę bez wartości zwrotnej, dla zadań w tle.asynczwracaDeferred,launch—Job.