Sobes.tech
Junior — Middle

Оё имкон дорад, ки барои усулҳои бо анҷомёбӣ (completion handler) истифода бурда мешавад, як обгӯишии худсохт бо истифода аз синтаксиси async/await таҳия кард?

sobes.tech AI

Ҷавоб аз AI

Бале, мумкин аст, барои усулҳои бо ҳалкунандаи анҷом додани худӣ, бо истифода аз async/await, сохтани фароувӣ бо withCheckedContinuation ё withUnsafeContinuation. Ин имкон медиҳад, ки API, ки ба 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.