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á")