Operator는 Observable이 방출하는 데이터를 변환, 필터링, 조합하는 함수다. 수도관 비유로 표현하면 파이프 중간에 달린 필터나 변환기라고 볼 수 있다.
Operator는 크게 4가지로 분류된다.
변환 (Transforming) → 데이터의 형태를 바꾼다 map, flatMap, scan
필터링 (Filtering) → 조건에 맞는 데이터만 통과 filter, distinctUntilChanged, debounce
조합 (Combining) → 여러 스트림을 합친다 zip, combineLatest, merge
에러 처리 (Error) → 에러를 복구하거나 재시도한다 catch, retry
각 요소를 받아서 다른 타입이나 다른 값으로 변환한다.
map은 값을 변환하지만, flatMap은 값을 받아서 새로운 Observable을 만들고 그 결과를 평탄화한다.
flatMap은 모든 요청의 결과를 받지만, flatMapLatest는 새 값이 오면 이전 Observable을 취소하고 최신 것만 유지한다.
이전 결과와 새 값을 합쳐서 누적된 결과를 방출한다. Swift의 reduce와 비슷하지만 중간 결과를 모두 방출한다.