상세 컨텐츠

본문 제목

RxSwift. Ch 5. Filtering Operators

TIL/RxSwift

by box-jeon 2020. 4. 20. 23:13

본문

바로 어제 takeWhile이 filter와 같은 동작을 하는 줄 알고 실수를 했는데 오늘 본 내용에서 다루고 있네요. 조건에 따라 .next 이벤트에 제약을 가하는 방법을 배웁니다. 

Ignoring operators

  • ignoreElements() - 모든 .next 이벤트를 무시합니다. .completed와 .error는 전달합니다.
  • elementAt(_ index: Int) - index에 해당하는 .next 이벤트만 전달합니다. 전달 직후 .completed 이벤트가 발생합니다.
  • filter(_ predicate: @escaping (E) throws -> Bool) - predicate closure가 true를 리턴하는 .next 이벤트만 전달합니다.

Skipping operators

  • skip(_ count: Int) - count 만큼의 .next 이벤트를 무시합니다. 이후의 모든 이벤트는 그대로 전달합니다.
  • skipWhile(_ predicate: @escaping (E) throws -> Bool) - predicate closure가 true를 리턴하는 한 .next 이벤트를 무시합니다. false를 리턴하면 해당 이벤트를 포함하여 이후의 모든 이벤트를 그대로 전달합니다.
  • skipUntil(_ other: O) - 트리거에 해당하는 other observable이 .next 이벤트를 방출할 때까지 .next 이벤트를 무시합니다. other observable이 .next 이벤트를 방출하면, 이후의 모든 이벤트를 그대로 전달합니다.

Taking operators

  • take(_ count: Int) - count 만큼의 .next 이벤트를 전달합니다. 전달 직후 .completed 이벤트를 방출합니다.
  • takeWhile(_ predicate: @escaping (E) throws -> Bool) - predicate closure가 true를 리턴하는 한 .next 이벤트를 전달합니다. false를 리턴하면 해당 이벤트를 전달하지 않고 .completed 이벤트를 방출합니다.
  • takeUntil(_ other: O) - 트리거에 해당하는 other observable이 .next 이벤트를 방출할 때까지 .next 이벤트를 전달합니다. other observable이 .next 이벤트를 방출하면, completed 이벤트를 방출합니다.

Distinct operators

  • distintUntilChanged() - 연속으로 동일한 element를 가진 .next 이벤트가 들어올 경우 무시합니다. 동일한 element인지를 판정하기 위해 element는 Equatable을 conform해야만 합니다. 직전에 전달받은 element와 다른 element가 들어올 경우 .next 이벤트를 전달합니다.
  • distintUntilChanged(_ comparer: @escaping (E, E) throws -> Bool) - 연속으로 동일 element를 가진 .next 이벤트가 들어올 경우 무시합니다. 동일한 element인지를 판정하기 위해 comparer closure를 사용합니다. true를 리턴할 경우 동일한 element로 판단해 무시하며, false를 리턴할 경우 .next 이벤트를 전달합니다.

'TIL > RxSwift' 카테고리의 다른 글

RxSwift. Ch 7. Transforming Operators  (0) 2020.04.26
RxSwift. Ch 6. Filtering Operators in Practice.  (0) 2020.04.25
RxSwift. Ch 4. Observables & Subjects in Practice  (0) 2020.04.19
RxSwift. Ch 3. Subjects  (0) 2020.04.18
RxSwift. Ch 2. Observables  (0) 2020.01.01

관련글 더보기

댓글 영역