Junior — Middle
Is het mogelijk om een eigen wrapper te implementeren voor methoden met een voltooiingshandler, met behulp van de async/await-syntaxis?
sobes.tech AI
Antwoord van AI
Ja, het is mogelijk om een eigen wrapper te maken voor methoden met een voltooiingshandler, door gebruik te maken van async/await, door de constructie met withCheckedContinuation of withUnsafeContinuation toe te passen. Dit stelt je in staat om een callback-georiënteerde API om te zetten in een asynchrone API die handig te gebruiken is met async/await.
Voorbeeld 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 is fetchData een methode met een voltooiingshandler, en fetchDataAsync is de wrapper met async/await.