Junior
Care este diferența dintre cererile sincrone și cele asincrone?
sobes.tech AI
Răspuns de la AI
Solicitările sincrone blochează firul de execuție curent până când se primește răspunsul. Solicitările asincrone nu blochează firul; răspunsul este procesat la finalizarea operației, de obicei printr-un mecanism de callback, delegat sau închidere.
| Caracteristică | Solicitare sincrona | Solicitare asincronă |
|---|---|---|
| Blocare fir | Da | Nu |
| Reactivitate UI | Poate bloca UI | Nu blochează UI |
| Complexitate implementare | Mai simplu | Mai complex (gestionare stare) |
| Utilizare în iOS | Rară, doar pentru sarcini scurte, nu pe firul principal | Preferabil, mai ales pentru operații lungi |
Exemplu de solicitare asincronă cu URLSession:
// Creăm o sarcină URLSession
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// Acest bloc se execută asincron după finalizarea solicitării
if let error = error {
print("Eroare: \(error.localizedDescription)")
return
}
// Procesarea datelor primite
if let data = data {
print("Date primite, bytes: \(data.count)")
}
// Actualizarea UI trebuie să se facă pe firul principal
DispatchQueue.main.async {
// Actualizare UI
}
}
// Pornirea sarcinii
task.resume()
// Codul de aici se execută imediat, fără a aștepta finalizarea solicitării
print("Solicitare trimisă")