Junior — Middle
¿Se puede implementar un envoltorio propio para métodos con finalización (completion handler), usando la sintaxis async/await?
sobes.tech AI
Respuesta de la IA
Sí, es posible crear un envoltorio propio para métodos con manejador de finalización, usando async/await, aplicando la construcción con withCheckedContinuation o withUnsafeContinuation. Esto permite transformar una API orientada a callbacks en una asíncrona, conveniente para usar con async/await.
Ejemplo en Swift:
func fetchDataAsync() async throws -> Data {
return try await withCheckedThrowingContinuation { continuation in
fetchData { result in
switch result {
case .success(let data):
continuation.resume(returning: data)
case .failure(let error):
continuation.resume(throwing: error)
}
}
}
}
Aquí, fetchData es un método con manejador de finalización, y fetchDataAsync es su envoltorio con async/await.