- Combine(2)- Operator2023년 10월 08일
- 2료일
- 작성자
- 2023.10.08.:57
Operator
publisher가 방출하는 데이터 스트림을 가공하거나 제어하는 강력한 도구
1. Map: publisher의 모든 요소를 변환하여 새로운 스트림으로 방출
Map과 ForEach차이
- 반복을 하는 것은 똑같지만 ForEach는 여기서 부터 여기까지 반복을하겟다 명시라면 map은 바꾸겟다라는 명시. 물론 ForEach에서 변환할수 있다= 이것자체가 Map . 다른사람이 봤을때 Map이 있으면 아~ 바꾸려나 보다~~ 이해할수 있다.
2. tryMap : Map과 같지만 클로저 오류발생시키면 Publish 종료
3. compactMap: nil을 제외하고 nil이 아닌것만 publish
4. replaceNil : nil들을 내가 원하는 element로 변환
5. scan: 아래와 같이 더한다. 누적 결과를 방출한다.
let publisher = (0...5).publisher .scan(0, { return $0 + $1 }) .sink(receiveValue: { print ("\($0)", terminator: " ") }) // Prints "0 1 3 6 10 15 ".
6. reduce: scan이 전부다 publish라면 이놈은 마지막만 publish
7. Debounce
지정한 시간 동안 추가 이벤트가 없으면 마지막 값 방출.
서버에 너무 많은 요청을 막을수 있다. ex)검색창에서 사용자가 입력하고 1초동안 반응없을때 서버요청
8. filter: 제공된 클로저와 일치하는 요소들만 다시 publish함.
9. collect: 모든 element를 모으고 publish가 완료되면 single array를 내보낸다.
let numbers = (0...7) let cancellable = numbers.publisher .collect(4) .sink { print("\($0)", terminator: " ") }
=> [0,1,2,3][4,5,6,7]이렇게 나오게 된다.
ex) 사용자가 버튼을 누를때마다 개별처리 대신 5번 누른 결과를 모아서 서버에 한번에 전송할수 있다.
10. tryFilter
에러던질수있는필터; 에러발생시 스트림종료
이후에도 수많은 Operator들이 있지만 그때마다 업데이트 예정
'반응형프로그래밍' 카테고리의 다른 글
RxSwift(3)-Filtering Operators & TransForming Operators (0) 2025.04.29 RxSwift(2)-Subject (0) 2025.04.29 RxSwift(1)-Observable (1) 2025.04.28 Combine3-Cancellable (0) 2023.07.09 Combine(1)-WhatisCombine(publish&subscirbe) (0) 2023.07.09 다음글이전글이전 글이 없습니다.댓글