Junior — Middle
Lehetséges saját wrapper-t implementálni olyan módszerekhez, amelyek végrehajtási kezelőt (completion handler) használnak, az async/await szintaxis alkalmazásával?
sobes.tech MI
Válasz az MI-től
Igen, saját burkolót hozhat létre a befejezési kezelővel rendelkező módszerekhez, az async/await használatával, alkalmazva a withCheckedContinuation vagy withUnsafeContinuation konstrukciót. Ez lehetővé teszi egy callback-alapú API átalakítását aszinkronná, ami kényelmes az async/await használatához.
Swift példában:
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)
}
}
}
}
Itt a fetchData egy befejezési kezelővel rendelkező módszer, az fetchDataAsync pedig a wrapperje async/await-tel.