async/await en Swift: cómo funcionan las funciones asíncronas

La palabra clave await marca los puntos de suspensión. El hilo queda libre para ejecutar otro trabajo mientras espera; cuando la operación termina, Swift reanuda la función en el contexto adecuado:

func procesarImagen(_ url: URL) async -> UIImage? {
    // Suspende el contexto actual, no el hilo
    guard let (data, _) = try? await URLSession.shared.data(from: url),
          let imagen = UIImage(data: data) else { return nil }
    return imagen
}

Convertir callbacks con withCheckedContinuation

func obtenerDatosLegacy() async -> Data {
    await withCheckedContinuation { continuation in
        apiAntigua.fetch { datos in
            continuation.resume(returning: datos)
        }
    }
}

Task: lanzar trabajo asíncrono

// Task unstructured: lanza trabajo en background
let tarea = Task {
    try await obtenerUsuario(id: 42)
}

// Obtener resultado
do {
    let resultado = try await tarea.value
    print(resultado)
} catch { print(error) }

// Cancelar
tarea.cancel()

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP