💻🏃‍♀️🏋️‍♀️
개발 아카이브
💻🏃‍♀️🏋️‍♀️
전체 방문자
오늘
어제
  • 분류 전체보기 (10)
    • 🍎 iOS (10)
      • 📱 iOS (4)
      • ⚡️ RxSwift (2)
      • 🚀 CI CD (1)
      • ♻️ 모듈화 (3)
    • 💻 Computer Science (0)
    • 💬 회고 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Clean Architecture
  • kingfisher
  • Ribs
  • cleanarchitecture
  • 앱개발
  • conflict
  • alamofire
  • MVVM
  • network
  • RequestInterceptor
  • CI/CD
  • SwiftGen
  • tuist
  • 비동기
  • MVVM-C
  • merge
  • Quick
  • 라이브러리
  • 프로젝트관리
  • Moya
  • SWIFT
  • 모듈화
  • 반응형
  • XcodeGen
  • IOS
  • RxSwift
  • operator
  • ReactiveX
  • Modular Architecture
  • Github Actions

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
💻🏃‍♀️🏋️‍♀️

개발 아카이브

🍎 iOS/⚡️ RxSwift

Operators - RxSwift를 편리하게 사용해보자

2022. 12. 3. 17:08

값을 변경, 필터링, 합치는 operator를 사용해서 조금 더 편리하게 RxSwift를 사용할 수 있습니다.

Operator는 3가지 타입으로 나눌 수 있습니다.

1. Transformation Operator

2. Filtering Operator

3. Combining Operator

Transformation Operations

map

Observable의 값을 변환합니다.

flatMap

Observable을 받아서 새로운 Observable을 만듭니다.

-> map과 flatMap의 차이점

map: Observable 내부의 값을 바꿈 (클로저 내부의 return 값이 일반 값)

flatMap: Observable 내부의 값을 받아서 새로운 Observable을 만들어서 return함 (클로저 내부의 return값이 Observable )

Combining Operators

CombineLatest

인자로 받는 observable들의 이벤트가 하나만 발생하더라도 모든 값을 들고 옵니다.

(여러 개의 값이 전달됨)

Merge

인자로 받는 Observable들의 이벤트를 직렬로 보내줍니다.

(값이 하나씩 여러번 전달이 됩니다.)

Zip

모든 스트림의 값이 같은 횟수로 내려올 때 발생합니다.

만약 목표로 하는 개수와 맞지 않는 개수가 내려온다면 방출하지 않습니다.

withLatestFrom

combineLatest + 하나의 Observable이 trigging 됐을 때만 이벤트를 방출합니다.

A라는 observable이 trigging됐을 때 다른 값과 함께 전달해주고 싶을 때 사용합니다.

withUnretained

순환 참조를 막기 위해서 [weak self] 를 많이 사용하는데 withUnretained를 사용해서 self를 파라미터로 전달해줄 수 있습니다.

viewModel.info
  .withUnretained(self) // (Object 객체, Element) 반환
  .subscribe(onNext: { owner, info in // owner가 self와 동일
    owner.doSomething(with: info)
  })
  .disposed(by: disposeBag)

Filtering Operations

filter

해당하는 조건을 충족하는 이벤트일 경우에만 내려줍니다.

 

skip

파라미터로 받는 개수만큼 건너뛰고 이벤트를 방출합니다.

distinctUntilChanged

같은 값이 들어오면 무시하고, 이전과 다른 값이 들어올 때만 이벤트를 방출합니다.

중복적으로 값을 방출하는 것을 방지할 때 많이 쓰입니다.

takeWhile

해당하는 조건을 만족할 때까지 이벤트를 방출해줍니다.

 

skipWhile

해당하는 조건을 만족할 때까지 이벤트를 방출하지 않습니다.

debounce

이벤트를 그룹화하여 특정 기간이 지난 후 하나의 이벤트만 발생하도록 합니다.

textfield같은 곳에서 많이 사용됩니다.

throttle

이벤트가 발생되고 난 후 설정한 기간동안 가장 최근의 이벤트를 방출합니다.

버튼을 여러번 클릭하는 것을 방지하는 경우에 많이 사용됩니다.

-> debounce와 throttle의 차이점

debounce: 트리거 여러번 들어오면 일정 시간동안 트리거가 안 들어올 때 방출

throttle: 이벤트 발생하고 쿨타임 있음

 

이외의 다양한 Operator는 RxMarble 사이트에서 마블을 움직여보면서 쉽게 이해할 수 있습니다.

https://rxmarbles.com/

'🍎 iOS > ⚡️ RxSwift' 카테고리의 다른 글

RxSwift 알아보기  (0) 2022.12.03
    '🍎 iOS/⚡️ RxSwift' 카테고리의 다른 글
    • RxSwift 알아보기
    💻🏃‍♀️🏋️‍♀️
    💻🏃‍♀️🏋️‍♀️

    티스토리툴바