Sobes.tech
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.