Sobes.tech
Junior

V čom spočíva rozdiel medzi synchronnými a asynchrónnymi požiadavkami?

sobes.tech AI

Odpoveď od AI

Synchronné požiadavky blokujú aktuálny vlákno vykonávania, kým nedostanú odpoveď. Asynchrónne požiadavky neblokujú vlákno; odpoveď sa spracováva po dokončení operácie, zvyčajne pomocou mechanizmu callback, delegáta alebo uzávierky.

Charakteristika Synchronná požiadavka Asynchrónna požiadavka
Blokovanie vlákna Áno Nie
Reaktivita UI Môže blokovať UI Neblokuje UI
Zložitosť implementácie Jednoduchšia Zložitejšia (riadenie stavu)
Použitie v iOS Zriedkavé, len pre krátke úlohy, nie na hlavnom vlákne Preferované, najmä pre dlhé operácie

Príklad asynchrónnej požiadavky s URLSession:

// Vytvorenie URLSessionTask
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    // Tento blok sa vykonáva asynchrónne po dokončení požiadavky
    if let error = error {
        print("Chyba: \(error.localizedDescription)")
        return
    }

    // Spracovanie prijatých dát
    if let data = data {
        print("Dáta prijaté, bajty: \(data.count)")
    }

    // Aktualizácia UI by mala prebiehať na hlavnom vlákne
    DispatchQueue.main.async {
        // Aktualizácia UI
    }
}

// Spustenie úlohy
task.resume()

// Kód tu sa vykonáva okamžite, bez čakania na dokončenie požiadavky
print("Žiadosť odoslaná")