Junior — Middle
Կարո՞ղ եք իրականացնել ձեր սեփական պատյան՝ ավարտման (completion handler) ունեցող մեթոդների համար, օգտագործելով async/await սինտաքսը։
sobes.tech AI
Պատասխան AI-ից
Այո, հնարավոր է ստեղծել սեփական պատյան՝ ավարտման հսկիչով մեթոդների համար, օգտագործելով 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 — ավարտման հսկիչով մեթոդ, իսկ fetchDataAsync — նրա async/await պատյան։