SC #4: async/await 구문

발행: (2026년 1월 17일 오전 01:18 GMT+9)
2 분 소요
원문: 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 #11: 작업 그룹

TaskGroup은 동적으로 생성된 subtasks를 포함하며, 이 subtasks는 serial 또는 concurrent 방식으로 실행될 수 있습니다. 그룹은 완료된 것으로 간주됩니다…

SC #8: Task 취소

Swift와 SwiftUI에서 Task 취소 > 참고: Swift에서 Task를 취소한다고 해서 실행이 즉시 중단된다는 보장은 없습니다. 각 Task는 계속해서 …

SC #3: Swift 6와의 관계

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

SC #10: 분리된 작업

Detached Task는 구조화된 동시성 컨텍스트를 벗어나 비동기적으로 작업을 실행하는 분리된 작업입니다. 이를 둘러싼 구조화된 동시성 컨텍스트를 상속하지 않습니다. 이 c를 상속하지 않음...