Junior — Middle
Se poate implementa un wrapper propriu pentru metodele cu handler de finalizare (completion handler), folosind sintaxa async/await?
sobes.tech AI
Răspuns de la AI
Da, se poate crea o înveliș personalizat pentru metodele cu handler de finalizare, folosind async/await, aplicând construcția cu withCheckedContinuation sau withUnsafeContinuation. Acest lucru permite transformarea unei API orientate pe callback-uri într-una asincronă, convenabilă pentru utilizare cu async/await.
Exemplu în 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)
}
}
}
}
Aici, fetchData este o metodă cu handler de finalizare, iar fetchDataAsync este învelișul său cu async/await.