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