비동기/대기 | 빠른

Mar 04 2023
비동기/대기.
비동기/대기 | 빠른

비동기/대기

  • async 키워드 는 함수를 비동기로 정의하는 데 사용됩니다.
  • 비동기 함수는 Task 개체를 반환합니다.
  • Task 개체 는 오류를 취소 , 대기 또는 처리하는 데 사용할 수 있습니다 .
  • 완료 핸들러(클로저)가 필요 없이 보다 동기식 스타일로 비동기 코드를 작성할 수 있습니다 .
  • async /await는 URLSession, DispatchQueue 등과 같은 비동기 API와 함께 사용할 수 있습니다.
  • import UIKit
    import Foundation
    
    // Codable is a typealias that conforms Decodable & Encodable protocols
    struct Post: Codable {
        let userId: Int
        let id: Int
        let title: String
        let body: String
    }
    
    // Fetch posts
    func fetchPosts() async throws -> [Post] {
        guard let url = URL(string: "https://jsonplaceholder.typicode.com/posts") else { return [] }
        
        let (data, _) = try await URLSession.shared.data(from: url)
        let decoder = JSONDecoder()
        return try decoder.decode([Post].self, from: data)54
    }
    
    // Request posts
    func requestPosts() {
        Task {
            let posts = try await fetchPosts()
            print("Posts count:", posts.count)
        }
    }
    
    requestPosts() // Output: Posts count: 100