share은 업스트림 Publisher로부터 발행되는 데이터 스트림을 여러 Subscriber들이 공유할 수 있게하는 Operator에요.

하나의 데이터 소스로부터 오는 데이터를 여러 곳에서 사용할 수 있고, 각 Subscriber들은 동일한 결과를 받아요.

기능

사용

let expensivePublisher = PassthroughSubject<String, Never>()

let sharedPublisher = expensivePublisher.share()

let subscriber1 = sharedPublisher
  .sink { value in
    print("subscriber1 value: \\(value)")
  }

let subscriber2 = sharedPublisher
  .sink { value in
    print("subscriber2 value: \\(value)")
  }

expensivePublisher.send("Data from network")

// 결과 (순서보장 x)
subscriber2 value: Data from network
subscriber1 value: Data from network