Middle
Czym jest funkcja suspend w języku Kotlin?
sobes.tech AI
Odpowiedź od AI
Funkcja suspend — to funkcja w Kotlinie, którą można "wstrzymać" (suspend) i później "wznowić" (resume). Służy do pisania asynchronicznego, nieblokującego kodu w stylu imperatywnym, co upraszcza pracę z operacjami długotrwałymi, takimi jak żądania sieciowe czy operacje na bazie danych.
Kluczowe cechy funkcji suspend:
- Modyfikator
suspend: Deklarowana za pomocą słowa kluczowegosuspendprzed nazwą funkcji. - Praca z korutynami: Wywoływana tylko z innych funkcji suspend lub z builderów korutyn (np.
launch,async). - Nieblokująca natura: Wstrzymanie funkcji suspend nie blokuje wątku, na którym jest wykonywana. Zamiast tego, wątek jest zwalniany do wykonywania innych zadań, a gdy wynik operacji asynchronicznej jest gotowy, wykonanie funkcji jest wznawiane od miejsca wstrzymania.
- Wyraźne oznaczenie: Modyfikator
suspendwyraźnie wskazuje, że wywołanie tej funkcji może być operacją długotrwałą i nie powinna być wykonywana bezpośrednio na głównym wątku (UI).
Przykład:
// Funkcja zwykła
fun fetchDataBlocking(): String {
// Blokujące wywołanie sieciowe, może się zawiesić
Thread.sleep(2000)
return "Dane odebrane"
}
// Funkcja suspend
suspend fun fetchDataNonBlocking(): String {
// Asynchroniczne wywołanie sieciowe
// Korutyna jest tutaj wstrzymywana, wątek nie jest blokowany
delay(2000) // Przykład funkcji suspend symulującej opóźnienie
return "Dane odebrane asynchronicznie"
}
Funkcje suspend stanowią podstawę do tworzenia czytelnego i łatwego w utrzymaniu kodu asynchronicznego z użyciem korutyn.