Sobes.tech
Junior — Middle

შეგიძლიათ განახორციელოთ თქვენი საკუთარი ორნამენტი დასრულების (completion handler) მქონე მეთოდებისთვის, გამოყენებით async/await სინტაქსის?

sobes.tech AI

პასუხი AI-სგან

დიახ, შესაძლებელია საკუთარი კორპუსის შექმნა დასრულების ჰენდლერის მქონე მეთოდებისთვის, გამოყენებით async/await, განახორციელეთ withCheckedContinuation ან withUnsafeContinuation კონსტრუქცია. ეს საშუალებას აძლევს callback-კოორდინირებულ API-ს გარდაქმნას ასინქრონულ 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 ორქი.