Junior — Middle
Comment implémenter un wrapper pour des méthodes avec une fermeture de complétion, en utilisant la syntaxe async/await?
sobes.tech IA
Réponse de l'IA
Чтобы обернуть метод с замыканием завершения (completion handler) в async/await, можно использовать withCheckedContinuation или withCheckedThrowingContinuation в Swift. Это позволяет преобразовать асинхронный метод с callback в функцию, которую можно вызвать с await.
Пример:
func fetchData(completion: @escaping (Result<String, Error>) -> Void) {
// Асинхронная операция с completion
}
func fetchDataAsync() async throws -> String {
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)
}
}
}
}
Такой подход упрощает работу с асинхронным кодом и улучшает читаемость.