Sobes.tech
Junior

Quelle est la différence entre les requêtes synchrones et asynchrones?

sobes.tech IA

Réponse de l'IA

Les requêtes synchrones bloquent le thread d'exécution actuel jusqu'à la réception de la réponse. Les requêtes asynchrones ne bloquent pas le thread ; la réponse est traitée à la fin de l'opération, généralement via un mécanisme de rappel (callback), délégué ou fermeture.

Caractéristique Requête synchrone Requête asynchrone
Blocage du thread Oui Non
Réactivité UI Peut bloquer l'UI Ne bloque pas l'UI
Complexité d'implémentation Plus simple Plus complexe (gestion d'état)
Utilisation en iOS Rare, seulement pour des tâches courtes, pas sur le thread principal Préféré, surtout pour des opérations longues

Exemple de requête asynchrone avec URLSession:

// Créer une tâche URLSession
let task = URLSession.shared.dataTask(with: url) { data, response, error in
    // Ce bloc s'exécute de manière asynchrone après la fin de la requête
    if let error = error {
        print("Erreur: \(error.localizedDescription)")
        return
    }

    // Traitement des données reçues
    if let data = data {
        print("Données reçues, bytes: \(data.count)")
    }

    // La mise à jour de l'UI doit se faire sur le thread principal
    DispatchQueue.main.async {
        // Mise à jour de l'UI
    }
}

// Démarrer la tâche
task.resume()

// Le code ici s'exécute immédiatement, sans attendre la fin de la requête
print("Requête envoyée")