Sobes.tech
Junior

Wat is het verschil tussen synchronische en asynchrone verzoeken?

sobes.tech AI

Antwoord van AI

Synchrone verzoeken blokkeren de huidige uitvoerthread totdat er een antwoord is ontvangen. Asynchrone verzoeken blokkeren de thread niet; het antwoord wordt verwerkt na het voltooien van de operatie, meestal via een callback-mechanisme, delegate of closure.

Kenmerk Synchroon verzoek Asynchroon verzoek
Thread blokkering Ja Nee
UI-reactiviteit Kan UI blokkeren Blokkeert UI niet
Implementatiecomplexiteit Eenvoudiger Complexer (toestandsbeheer)
Gebruik in iOS Zelden, alleen voor korte taken, niet op de hoofdthread Voorkeur, vooral voor lange operaties

Voorbeeld van een asynchroon verzoek met URLSession:

// Maak een URLSessionTaak
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    // Deze blok wordt asynchroon uitgevoerd na het voltooien van het verzoek
    if let error = error {
        print("Fout: \(error.localizedDescription)")
        return
    }

    // Verwerking van de ontvangen gegevens
    if let data = data {
        print("Gegevens ontvangen, bytes: \(data.count)")
    }

    // UI-update moet plaatsvinden op de hoofdthread
    DispatchQueue.main.async {
        // UI bijwerken
    }
}

// Start de taak
task.resume()

// De code hier wordt onmiddellijk uitgevoerd, zonder te wachten op het voltooien van het verzoek
print("Verzoek verzonden")