Junior
Was ist der Unterschied zwischen synchronen und asynchronen Anfragen?
sobes.tech KI
Antwort von AI
Synchrone Anfragen blockieren den aktuellen Ausführungsthread, bis eine Antwort empfangen wird. Asynchrone Anfragen blockieren den Thread nicht; die Antwort wird nach Abschluss der Operation verarbeitet, meist über einen Callback-Mechanismus, Delegaten oder Closures.
| Merkmal | Synchrone Anfrage | Asynchrone Anfrage |
|---|---|---|
| Thread-Blockierung | Ja | Nein |
| UI-Reaktionsfähigkeit | Kann UI blockieren | Blockiert UI nicht |
| Implementierungskomplexität | Einfacher | Komplexer (Zustandsverwaltung) |
| Verwendung in iOS | Selten, nur für kurze Aufgaben, nicht im Hauptthread | Bevorzugt, besonders für lange Operationen |
Beispiel für eine asynchrone Anfrage mit URLSession:
// Erstellen einer URLSessionTask
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// Dieser Block wird asynchron nach Abschluss der Anfrage ausgeführt
if let error = error {
print("Fehler: \(error.localizedDescription)")
return
}
// Verarbeitung der empfangenen Daten
if let data = data {
print("Daten empfangen, Bytes: \(data.count)")
}
// UI-Update sollte im Haupt-Thread erfolgen
DispatchQueue.main.async {
// UI aktualisieren
}
}
// Aufgabe starten
task.resume()
// Der Code hier wird sofort ausgeführt, ohne auf den Abschluss der Anfrage zu warten
print("Anfrage gesendet")