# Combine - Serena🐷, Karen🦦, Whales🐬 ## **1.** Stream이란 <aside> 💡 RxSwift는 함수형 프로그래밍으로 코드를 작성할 수 있도록 ReactiveX 프로젝트에서 작성한 오픈소스 라이브러리입니다. 그리고 RxSwift에서는 stream이란 용어를 사용하고 있고, 이는 Combine에서도 사용되고 있음을 여러분이 직접 확인하실 수 있습니다. 이 때 Stream이란 무엇인가요? </aside> ### TODO - Stream이 무엇인지 조사해보고, 자신들만의 언어로 정의해주세요 → 데이터 흐름을 지칭하는 개념, 데이터를 일련의 연속적인 요소로 나타내며 이 요소들은 순차적으로 처리됨 → swift에는 데이터를 스트림 처리하는 방식으로 사용되는 기능이 있음 ## 2. Combine을 사용하여 리팩토링 해보기 [ForCombine.zip](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b75c1966-17d2-4b50-b065-2a81d10f0dd5/ForCombine.zip) - 위 프로젝트를 다운로드 받습니다 - 프로젝트에는 GCD와 callback을 활용한 기능들이 작성되어있습니다. ### TODO - 위 기능을 Combine을 활용하여 리팩토링 해보도록 합니다 - 우리의 목표는 스트림을 통해 Food를 main에 전달할 수 있는, 새로운 모델을 만드는 것입니다 - Server에서는 이미 Combine을 활용하여 값을 내려받을 수 있도록 API를 제공하고 있습니다. - 일단 이를 활용하는 게 우선이지만, 새로운 기능을 추가해도 괜찮습니다 - Combine.Publisher 문서를 참고합니다 - 또 이미 작성되어있는 Server의 코드를 참고해보도록 합시다 <aside> 💡 Hint 1. 우리는 Publisher를 합성해나가야 합니다. 2. GCD에서 Timer를 사용하는 것처럼 시간을 반복하고 싶은 경우 TimerPubllisher를 사용해야 합니다. 3. TimerPubllisher는 꼭 autoconnect()를 오퍼레이터를 사용해줍니다 4. 시간이 여유롭다면, TimerPubllisher는 왜 autoconnect를 호출해야하는지도 찾아봅시다 </aside>