Junior
V čem spočívá rozdíl mezi synchronními a asynchronními požadavky?
sobes.tech AI
Odpověď od AI
Synchronní požadavky blokují aktuální vlákno provádění, dokud nedostanou odpověď. Asynchronní požadavky neblokují vlákno; odpověď je zpracována po dokončení operace, obvykle pomocí mechanismu zpětného volání (callback), delegáta nebo uzávěru.
| Charakteristika | Synchronní požadavek | Asynchronní požadavek |
|---|---|---|
| Blokování vlákna | Ano | Ne |
| Reaktivita UI | Může blokovat UI | Neblokuje UI |
| Složitost implementace | Jednodušší | Složitější (řízení stavu) |
| Použití v iOS | Zřídka, pouze pro krátké úkoly, ne na hlavním vlákně | Preferováno, zejména pro dlouhé operace |
Příklad asynchronního požadavku s URLSession:
// Vytvoření URLSessionTask
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// Tento blok se provádí asynchronně po dokončení požadavku
if let error = error {
print("Chyba: \(error.localizedDescription)")
return
}
// Zpracování přijatých dat
if let data = data {
print("Data přijata, bajty: \(data.count)")
}
// Aktualizace UI by měla probíhat na hlavním vlákně
DispatchQueue.main.async {
// Aktualizace UI
}
}
// Spuštění úkolu
task.resume()
// Kód zde se provádí okamžitě, aniž by čekal na dokončení požadavku
print("Požadavek odeslán")