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.