티스토리 뷰

RxSwift

[RxSwift] Operator, Filtering Observables

Hani_Levenshtein 2021. 7. 1. 11:19

안녕하세요 Hani입니다.

이번엔 Observable의 event중 조건에 맞는 것만 뽑아오는 operator를 알아보겠습니다.

 

시작 😊

 


Debounce

 

특정 시간(x)동안 아무런 item이 추가로 들어오지 않으면, 가장 마지막으로 들어온 item를 방출하는 Debounce입니다. 

예를 들면, 버튼을 광클하고 특정 시간이 지나면 마지막 클릭 이벤트만 받아들이게 됩니다.

 


DistinctUntilChanged

 

기본적으로는 연속적으로 같은 item을 방출하지 않도록 item이 distinct한 Observable을 만들어주는 distinct입니다.

 

 

item이 distinct하다는 기준을 위와 같이 다르게 설정할 수도 있습니다.

 


ElementAt

n번째 item만 방출하는 ElementAt입니다.

없는 인덱스를 참조하면 에러가 뜬다.

 


Filter

조건을 만족시키는 item만 방출하는 Observable을 만드는 Filter입니다.


First

첫번째 event만 방출하고 바로 종료되는 Observable을 만드는 First입니다.

 


IgnoreElements

 

IgnoreElements는 Observable의 onNext item를 무시하고, onError와 onCompleted notification만 허용합니다.

 


Skip

Observable이 방출하는 처음 n개의 item를 무시하는 Observable을 만드는 skip입니다.

뒤에 비교할 operator를 위해서 몇 가지 기억할 점은

처음 n개의 item가 무시되기 때문에 반환되는 Observable의 앞쪽이 비어있다는 것..

그리고 notification의 시점이 유지된다는 것입니다.


SkipLast

Observable이 방출하는 마지막 n개의 item를 무시하는 Observable을 만드는 skipLast입니다.

마지막 n개의 item가 무시되지만 Marble의 간격이나 시점이 기존 Observable의 마지막 Marble들을 따르고 있습니다.

 


Take

 

Observable이 방출하는 처음 n개의 item만을 방출하는 Observable을 만드는 take입니다.

마지막 item이 방출됨과 동시에 notification이 일어납니다.

 


TakeLast

Observable이 방출하는 마지막 n개의 item만을 방출하는 Observable을 만드는 takeLast입니다.

기존 Observable의 종료 시점에 맞춰 item이 방출됩니다.

 

 

 

 

음.. 사실 공식문서를 더 깊게 읽어보면 더 큰 차이점이 보이긴 해요. 😅

take(1), elementAt(0), first()의 차이라든지..!

 

하지만 일단은 훑어보는 과정이기 때문에 지금은 자세하게 들어가진 않을게요.

아직은 나뭇잎 말고 숲을 보는 마음으로 😎


References

http://reactivex.io/documentation/operators.html

 

'RxSwift' 카테고리의 다른 글

[RxSwift] subscribe, observe / Scheduler 관리  (0) 2021.07.11
[RxSwift] Closure ARC / Memory Leak 실험  (0) 2021.07.10
[RxSwift] Subject  (0) 2021.07.07
[RxSwift] Operator, Create Observables  (0) 2021.06.28
[RxSwift] Observable, Subscribe  (0) 2021.06.25
댓글