SC #4: async/await 구문

발행: (2026년 1월 17일 오전 01:18 GMT+9)
2 min read
원문: Dev.to

Source: Dev.to

async/await 함수 선언

비동기 함수는 async 키워드로 표시해야 합니다.
함수가 오류를 발생시킬 수 있으면 async 뒤에 throws 키워드를 추가합니다.
함수가 오류를 발생시키지 않으면 throws를 생략할 수 있습니다.

func fetchData() async throws -> Data {
    // …
    // ❌ 컴파일 오류: 값을 반환하거나 오류를 발생시켜야 합니다
}

async throws 구문을 사용할 때 함수는 항상 값을 반환하거나 오류를 발생시켜야 합니다.

클로저 사용

클로저를 사용할 때 호출을 잊어버리기 쉬운데, 이는 논리 오류를 일으킵니다(예: 오류를 알리지 않거나 값을 반환하지 않음).

func fetchData(_ completion: @escaping (Data?, Error?) -> Void) {
    // `completion(_: )` 블록을 호출하지 않음, 이는 오류가 됩니다
}

Task 로 동기 컨텍스트에서 async 코드 실행

Task는 동기 컨텍스트 안에 비동기 컨텍스트를 생성하여, 동시성을 지원하지 않는 함수에서도 async 메서드를 호출할 수 있게 합니다.

Task {
    try await fetchData()
}

Task를 사용하지 않으면 다음과 같은 오류가 발생합니다:

'async' call in a function that does not support concurrency

핵심 개념

  • async: 함수가 비동기 작업을 수행함을 나타냅니다.
  • await: 비동기 함수가 완료될 때까지 실행을 일시 중지합니다.
  • throws: 오류를 전파합니다.
Back to Blog

관련 글

더 보기 »

SC #3: Swift 6와의 관계

Swift Concurrency 3 Part Series https://dev.to/david_goyes_a488f58a17a53/series/35092 'Swift Concurrency'는 Swift 6의 기초였지만, Swift 6은 …