Sobes.tech
Junior — Middle

Lze implementovat vlastní obal pro metody s dokončovacím handlerem (completion handler) pomocí syntaxe async/await?

sobes.tech AI

Odpověď od AI

Ano, je možné vytvořit vlastní obal pro metody s obsluhou dokončení pomocí async/await, aplikací konstrukce s withCheckedContinuation nebo withUnsafeContinuation. To umožňuje převést callback-orientované API na asynchronní, vhodné pro použití s async/await.

Pří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)
            }
        }
    }
}

Zde je fetchData metoda s obsluhou dokončení a fetchDataAsync je její obal s async/await.