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