Junior
Qual è la differenza tra richieste sincrone e asincrone?
sobes.tech AI
Risposta dell'AI
Le richieste sincrone bloccano il thread di esecuzione corrente fino a ricevere una risposta. Le richieste asincrone non bloccano il thread; la risposta viene elaborata al termine dell'operazione, di solito tramite un meccanismo di callback, delegato o closure.
| Caratteristica | Richiesta sincrona | Richiesta asincrona |
|---|---|---|
| Blocco del thread | Sì | No |
| Reattività UI | Può bloccare l'UI | Non blocca l'UI |
| Complessità di implementazione | Più semplice | Più complessa (gestione dello stato) |
| Uso in iOS | Raro, solo per compiti brevi, non sul thread principale | Preferibile, soprattutto per operazioni lunghe |
Esempio di richiesta asincrona con URLSession:
// Creare un URLSessionTask
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// Questo blocco viene eseguito in modo asincrono dopo il completamento della richiesta
if let error = error {
print("Errore: \(error.localizedDescription)")
return
}
// Elaborazione dei dati ricevuti
if let data = data {
print("Dati ricevuti, byte: \(data.count)")
}
// L'aggiornamento dell'UI deve avvenire sul thread principale
DispatchQueue.main.async {
// Aggiornare l'UI
}
}
// Avviare il task
task.resume()
// Il codice qui viene eseguito immediatamente, senza attendere il completamento della richiesta
print("Richiesta inviata")