Sobes.tech
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 chiave suspend prima 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 suspend indica 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.