• 티스토리 홈
  • 프로필사진
    2료일
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
2료일
  • 프로필사진
    2료일
    • 분류 전체보기 (118)
      • SWIFT개발 (29)
      • 알고리즘 (25)
      • Design (6)
      • ARkit (1)
      • 면접준비 (32)
      • UIkit (2)
      • Vapor-Server with swift (3)
      • 디자인패턴 (5)
      • 반응형프로그래밍 (12)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Combine(2)- Operator
        2023년 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
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바