Sobes.tech
Junior

Kāda ir atšķirība starp sinhronajām un asinhronajām pieprasījumiem?

sobes.tech AI

Atbilde no AI

Sinhronās pieprasījumi bloķē pašreizējo izpildes pavedienu līdz saņem atbildi. Asinhronās pieprasījumi nebloka pavedienu; atbilde tiek apstrādāta pēc operācijas pabeigšanas, parasti izmantojot atpakaļzvanu (callback), delegātu vai slēgumu.

Raksturlielums Sinhrons pieprasījums Asinhrons pieprasījums
Pavediena bloķēšana
UI reakcija Var bloķēt UI Nebloka UI
Īstenošanas sarežģītība Vienkāršāks Sarežģītāks (stāvokļa pārvaldība)
Izmantošana iOS Retāk, tikai īsiem uzdevumiem, ne galvenajā pavedienā Vēlams, īpaši garām operācijām

Piemērs asinhronai pieprasījumam ar URLSession:

// Izveido URLSessionTask
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    // Šis bloks tiek izpildīts asinhroni pēc pieprasījuma pabeigšanas
    if let error = error {
        print("Kļūda: \(error.localizedDescription)")
        return
    }

    // Saņemto datu apstrāde
    if let data = data {
        print("Dati saņemti, baitu skaits: \(data.count)")
    }

    // UI atjaunināšana jāveic galvenajā pavedienā
    DispatchQueue.main.async {
        // UI atjaunināšana
    }
}

// Sākt uzdevumu
task.resume()

// Šeit kods tiek izpildīts nekavējoties, nesagaidot pieprasījuma pabeigšanu
print("Pieprasījums nosūtīts")