Junior — Middle
Je možné implementovať vlastný obal pre metódy s ukončovacím (completion handler) pomocou syntaxe async/await?
sobes.tech AI
Odpoveď od AI
Áno, je možné vytvoriť vlastný obal pre metódy s ukončovacím spracovateľom, pomocou async/await, aplikovaním konštrukcie s withCheckedContinuation alebo withUnsafeContinuation. To umožňuje previesť callback-orientované API na asynchrónne, vhodné na použitie s async/await.
Príklad v 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)
}
}
}
}
Tu je fetchData metóda s ukončovacím spracovateľom a fetchDataAsync je jej obal s async/await.