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.