Combine(2)- Operator

2023. 10. 8. 01: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
'반응형프로그래밍' 카테고리의 다른 글
  • RxSwift(2)-Subject
  • RxSwift(1)-Observable
  • Combine3-Cancellable
  • Combine(1)-WhatisCombine(publish&subscirbe)
2료일
2료일
좌충우돌 모든것을 다 정리하려고 노력하는 J가 되려고 하는 세미개발자의 블로그입니다. 편하게 보고 가세요
  • 2료일
    GPT에게서 살아남기
    2료일
  • 전체
    오늘
    어제
    • 분류 전체보기 (120) N
      • SWIFT개발 (29)
      • 알고리즘 (25)
      • Design (6)
      • ARkit (1)
      • 면접준비 (30)
      • UIkit (2)
      • Vapor-Server with swift (3)
      • 디자인패턴 (5)
      • 반응형프로그래밍 (12)
      • CS (3)
      • 도서관 (1) N
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
2료일
Combine(2)- Operator
상단으로

티스토리툴바