Future은 단일 작업의 결과값을 비동기적으로 생성하고 완료할때까지 기다리는 Publisher에요.

다른 Publisher들과는 달리 비동기 이벤트를 핸들링하기 적합하게 만들어진 Publisher에요.

특징

사용

여기에서는 실제 네트워킹을 통해 데이터를 불러오고 이 데이터를 Future Publisher에 담아 구독하는 일련의 흐름을 설명할게요.

먼저 Data를 리턴하는 함수를 만들어요.

func fetchUserDataAsync() async throws -> Data {
  guard let url = URL(string: "<https://api.publicapis.org/entries>") else {
    throw URLError(.badURL)
  }
  let (data, response) = try await URLSession.shared.data(from: url)
  guard let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 else {
    throw URLError(.badServerResponse)
  }
  return data
}

그리고 Future을 통해 비동기 이벤트의 결과를 전달해요.

Future은 promise라는 클로저를 인자로 넘겨서 개발자가 성공과 실패에 대한 결과값을 이 promise 안에 담을 수 있어요.