Junior
¿En qué consiste la diferencia entre solicitudes síncronas y asíncronas?
sobes.tech AI
Respuesta de la IA
Las solicitudes sincrónicas bloquean el hilo de ejecución actual hasta recibir una respuesta. Las solicitudes asincrónicas no bloquean el hilo; la respuesta se procesa al finalizar la operación, generalmente mediante un mecanismo de devolución de llamada (callback), delegado o cierre.
| Característica | Solicitud sincrónica | Solicitud asincrónica |
|---|---|---|
| Bloqueo del hilo | Sí | No |
| Reacción de UI | Puede bloquear la UI | No bloquea la UI |
| Complejidad de implementación | Más simple | Más compleja (gestión de estado) |
| Uso en iOS | Rara, solo para tareas cortas, no en el hilo principal | Preferido, especialmente para operaciones largas |
Ejemplo de solicitud asincrónica usando URLSession:
// Crear URLSessionTask
let task = URLSession.shared.dataTask(with: url) { data, response, error in
// Este bloque se ejecuta de forma asincrónica después de completar la solicitud
if let error = error {
print("Error: \(error.localizedDescription)")
return
}
// Procesamiento de los datos recibidos
if let data = data {
print("Datos recibidos, bytes: \(data.count)")
}
// La actualización de la UI debe realizarse en el hilo principal
DispatchQueue.main.async {
// Actualización de la UI
}
}
// Iniciar la tarea
task.resume()
// El código aquí se ejecuta inmediatamente, sin esperar a que termine la solicitud
print("Solicitud enviada")