Sobes.tech
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")