Sobes.tech
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")