Sobes.tech
Junior — Middle

Da li je moguće implementirati sopstveni omotač za metode sa završnim (completion handler), koristeći sintaksu async/await?

sobes.tech АИ

Одговор од АИ

Да, могу креирати сопствену обвивку за методе са handler-ом за завршетак, користећи async/await, применом конструкције са withCheckedContinuation или withUnsafeContinuation. Ово омогућава претварање callback оријентисаног API у асинхрона, погодна за коришћење са async/await.

Пример у 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)
            }
        }
    }
}

Овде, fetchData је метода са handler-ом за завршетак, а fetchDataAsync је његова обвивка са async/await.