Middle
Cos'è una funzione suspend in Kotlin?
sobes.tech AI
Risposta dell'AI
La funzione suspend — è una funzione in Kotlin che può essere "sospesa" (suspend) e successivamente "ripresa" (resume). Viene utilizzata per scrivere codice asincrono e non bloccante in stile imperativo, semplificando il lavoro con operazioni a lungo termine come richieste di rete o operazioni su database.
Caratteristiche principali delle funzioni suspend:
- Modificatore
suspend: Dichiarata con la parola chiavesuspendprima del nome della funzione. - Lavoro con le coroutine: Viene chiamata solo da altre funzioni suspend o da builder di coroutine (ad esempio,
launch,async). - Naturalezza non bloccante: La sospensione di una funzione suspend non blocca il thread su cui viene eseguita. Invece, il thread viene liberato per eseguire altri compiti, e quando il risultato dell'operazione asincrona è pronto, l'esecuzione della funzione riprende dal punto di sospensione.
- Marcatura esplicita: Il modificatore
suspendindica chiaramente che la chiamata a questa funzione può essere un'operazione lunga e non dovrebbe essere eseguita direttamente sul thread principale (thread UI).
Esempio:
// Funzione normale
fun fetchDataBlocking(): String {
// Chiamata di rete bloccante, può bloccare
Thread.sleep(2000)
return "Dati ricevuti"
}
// Funzione suspend
suspend fun fetchDataNonBlocking(): String {
// Chiamata di rete asincrona
// La coroutine si sospende qui, il thread non viene bloccato
delay(2000) // Esempio di funzione suspend che simula un ritardo
return "Dati ricevuti in modo asincrono"
}
Le funzioni suspend sono alla base della costruzione di codice asincrono facile da leggere e mantenere usando le coroutine.