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.