Junior
У чему се састоји разлика између синхроних и асинхроних захтева?
sobes.tech АИ
Одговор од АИ
Sinhroni zahtevi blokiraju trenutni tok izvršavanja dok ne dobiju odgovor. Asinhroni zahtevi ne blokiraju tok; odgovor se obrađuje nakon završetka operacije, obično putem mehanizma povratnog poziva (callback), delegata ili zatvarača.
| Karakteristika | Sinhroni zahtev | Asinhroni zahtev |
|---|---|---|
| Blokiranje toka | Da | Ne |
| Reaktivnost UI | Može blokirati UI | Ne blokira UI |
| Složenost implementacije | Jednostavnije | Složenije (upravljanje stanjem) |
| Upotreba u iOS | Retko, samo za kratke zadatke, ne na glavnom thread-u | Preferira se, posebno za duže operacije |
Primer asinhronog zahteva sa URLSession:
// Kreiranje URLSessionTask
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// Ovaj blok se izvršava asinhrono nakon završetka zahteva
if let error = error {
print("Greška: \(error.localizedDescription)")
return
}
// Obrada primljenih podataka
if let data = data {
print("Podaci primljeni, bajtovi: \(data.count)")
}
// Ažuriranje UI treba da se obavi na glavnom thread-u
DispatchQueue.main.async {
// Ažuriranje UI
}
}
// Pokretanje zadatka
task.resume()
// Kod ovde se izvršava odmah, bez čekanja na završetak zahteva
print("Zahtev poslat")