Transforming 과 Filtering 에 이어서 Combine 연산자들에대해 알아보자. 먼저 Prepending 연산자이다. prepend 연산자는 하나 이상의 값을 스트림 앞에 추가하는데 사용된다. 가져올 스트림 앞에 이벤트를 붙여주고 싶을 때 append연산자를 사용하자.
Combining 연산자인 append 연산자는 prepend 처럼 값이나 퍼블리셔에 더해주는 연산자지만 prepend는 앞에붙여주었다면 append는 뒤에 붙여주는 연산자이다.
switchToLatest 연산자는 중첩된 Publisher를 다룰 때 유용합니다. Publisher가 또 다른 Publisher를 방출할 때 사용되며, 최신 Publisher가 방출하는 값만을 구독하고 이전에 구독하던 Publisher는 취소한다. 위 예제에서 firstPublisher를 구독하다 secondPublisher 를 다시 구독하자 firstPublisher가 던지는 이벤트를 씹고 secondPublisher가 던지는 이벤트를 받는것을 확인할 수 있다.
merge 연산자는 여러 Publisher로부터 방출되는 값을 하나의 스트림으로 결합할 때 사용된다. 이 연산자는 다수의 Publisher가 독립적으로 생성한 값을 순차적으로 수신할 수 있으며, 각 Publisher의 출력은 시간 순서에 따라 합쳐진 단일 스트림으로 관찰된다. merge는 특히 복수의 소스에서 동시에 데이터를 받아야 할 때 유용하게 사용된다.
CombineLatest 연산자는 두 개 이상의 Publisher로부터 각각의 최신 값을 결합하여 새로운 값이 하나의 Publisher로부터 방출될 때마다 결과를 생성한다 . 이 때 각 Publisher가 최소 한 번은 값을 방출할 때까지 결과를 생성하지 않는다. 여러 데이터 소스의 최신 상태를 반영할 때 유용하다.
zip 연산자는 여러 Publisher의 값을 쌍으로 결합할 때 사용된다. 각 Publisher로부터 값이 하나씩 방출될 때마다 해당 값들을 그룹화하여 튜플로 받을 수 있다. 동시에 여러 데이터 소스로부터 동등한 수의 이벤트를 처리할 때 유용하며, 각 Publisher의 방출 속도에 따라 값이 대기할 수도 있다 ( 위 예제에서 1,2가 먼저 들어가도 zip한 퍼블리셔가 값 방출할 때까지 대기)
https://www.kodeco.com/5429795-reactive-programming-in-ios-with-combine/lessons/20
'Flutter' 카테고리의 다른 글
Swift에서 CustomStringConvertible 프로토콜 활용하기 (0) | 2024.05.13 |
---|---|
| Combine | 6. Timing Operators (0) | 2024.05.12 |
Flutter Widget의 작동원리 (0) | 2024.05.10 |
| Combine | 4. Filtering Operators (0) | 2024.05.09 |
UIView 의 Drawing Cycle (0) | 2024.05.08 |