Sobes.tech
Junior — Middle

Kann man einen eigenen Wrapper für Methoden mit Abschluss-Handler (completion handler) implementieren, unter Verwendung der async/await-Syntax?

sobes.tech KI

Antwort von AI

Ja, es ist möglich, eine eigene Hülle für Methoden mit Abschluss-Handler zu erstellen, die async/await verwendet, indem man die Konstruktion mit withCheckedContinuation oder withUnsafeContinuation anwendet. Dies ermöglicht die Umwandlung einer callback-orientierten API in eine asynchrone, die bequem mit async/await verwendet werden kann.

Beispiel in 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)
            }
        }
    }
}

Hier ist fetchData eine Methode mit Abschluss-Handler, und fetchDataAsync ist sein async/await-Wrapper.