Sobes.tech
Junior — Middle

É possível implementar um wrapper próprio para métodos com completion handler, usando a sintaxe async/await?

sobes.tech IA

Resposta da IA

Sim, é possível criar um wrapper próprio para métodos com manipulador de conclusão, usando async/await, aplicando a construção com withCheckedContinuation ou withUnsafeContinuation. Isso permite transformar uma API orientada a callbacks em uma assíncrona, conveniente para usar com async/await.

Exemplo em 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)
            }
        }
    }
}

Aqui, fetchData é um método com manipulador de conclusão, e fetchDataAsync é seu wrapper com async/await.