Sobes.tech
Junior — Middle

Peut-on implémenter un wrapper personnalisé pour les méthodes avec gestionnaire de fin (completion handler), en utilisant la syntaxe async/await?

sobes.tech IA

Réponse de l'IA

Oui, il est possible de créer un wrapper personnalisé pour les méthodes avec gestionnaire de complétion, en utilisant async/await, en appliquant la construction avec withCheckedContinuation ou withUnsafeContinuation. Cela permet de transformer une API orientée callback en une API asynchrone, pratique à utiliser avec async/await.

Exemple 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)
            }
        }
    }
}

Ici, fetchData est une méthode avec gestionnaire de complétion, et fetchDataAsync est son wrapper avec async/await.