본문 바로가기

개발

Combine Publisher - Empty

728x90

Combine에서 Publisher Empty는 값을 방출하지 않고 즉시 완료하는 간단하면서도 유용한 Publisher입니다. 데이터 스트림에서 다양한 용도로 사용됩니다.

  • 완료 신호: 값을 방출하지 않고 데이터 스트림의 끝을 나타내는 데 사용합니다 . 이는 데이터를 생성하지 않는 데이터 소스가 있거나 스트림의 끝을 명시적으로 표시하려는 경우에 유용할 수 있습니다.
  • 플레이스홀더 게시자: 어떤 경우에는 아무것도 방출하지 않지만 구독 및 완료 처리는 허용하는 플레이스홀더 게시자가 필요할 수 있습니다. 이 플레이스홀더 역할을 할 수 있습니다.
  • 다른 게시자와 결합: 또는 와 같은 연산자를 사용하여 다른 게시자와 결합하여 특정 시작점이나 종료점이 있는 데이터 스트림을 생성할 수 있습니다. Emptyconcatprepend

완료를 알리는 데 사용하는 예는 다음과 같습니다 .

import Combine



func fetchDataFromAPI() -> AnyPublisher<String, Never> {

  // Simulate API call that might not return any data

  return Empty() // Indicate no data is available

}



fetchDataFromAPI()

  .sink(receiveCompletion: { completion in

    if case .finished = completion {

      print("No data received from API")

    }

  }, receiveValue: { value in

    // This closure won't be called because Empty doesn't emit values

  })

 

이 예에서:

  • fetchDataFromAPIAnyPublisher는 유형의 값을 반환하는 함수입니다.
  • 가져올 데이터가 없을 수 있으므로 값을 내보내지 않고 단순히 신호 완료로 돌아갑니다 .
  • 구독자 폐쇄는 스트림이 종료되었음을 나타내는 케이스 receiveCompletion와 함께 호출됩니다 

플레이스홀더로 사용하는 또 다른 예는 다음과 같습니다 .

import Combine



func someOperation() -> AnyPublisher<Void, Never> {

  // Simulate an operation that doesn't produce any data

  return Empty()  // Placeholder publisher

}



// Combine with another publisher

Just("Start")

  .concat(someOperation())

  .sink(receiveCompletion: { _ in }, receiveValue: { value in

    print(value)

  })

 

이 예에서:

  • someOperationAnyPublisher는 유형의 값을 반환하는 함수입니다 Void.
  • 이 작업에서는 아무런 데이터도 생성되지 않으므로 플레이스홀더 게시자를 사용합니다 .
  • 우리는 게시자 와 concat결합하기 위해 연산자 를 사용합니다 .Just("Start")
  • 구독자는 첫 번째 게시자가 내보낸 "시작" 값만 받고 그 다음에 완료 값이 나옵니다.

키 포인트:

  • Empty완료를 알리거나 플레이스홀더 역할을 하는 기본적인 게시자입니다.
  • 아무 값도 방출하지 않습니다.
  • 다른 게시자와 결합하여 연산자를 사용하여 다양한 데이터 스트림 동작을 생성합니다.

이해하면 Empty데이터 흐름을 효과적으로 관리하고 Combine 애플리케이션에서 데이터를 사용할 없는 시나리오를 처리할 있습니다.

'개발' 카테고리의 다른 글

Combine Publisher - Record  (1) 2024.07.08
Combine Publisher - Fail  (0) 2024.07.08
Combine Publisher - Deferred  (0) 2024.07.08
Combine Publisher - Future  (1) 2024.07.08
Combine Publisher - Just  (0) 2024.07.08