RxSwift:
RxSwift에서 take
와 skip
은 Observable의 이벤트 스트림에서 특정 이벤트만 필터링할 때 사용하는 연산자이다. 은근 사용할 일이 많은 이 두개의 연산자를 명확히 비교하기위해 작성!
take
연산자
지정한 숫자만큼의 이벤트를 가져오고, 그 이후의 이벤트는 무시
1 2 3
| Observable.of(1, 2, 3, 4, 5) .take(3) .subscribe(onNext: { print($0) })
|
출력 결과
활용 예
- 초기 값 몇 개만 가져오고 싶을 때
- 특정 횟수까지만 유효한 스트림 처리 시
skip
연산자
지정한 숫자만큼의 이벤트를 건너뛰고, 그 이후의 이벤트부터 전달
1 2 3
| Observable.of(1, 2, 3, 4, 5) .skip(3) .subscribe(onNext: { print($0) })
|
출력 결과
활용 예
- 프롤로그성 이벤트 제외하고 처리할 때
- 광고 스킵 후 본 컨텐츠만 받아보고 싶을 때 등
차이점
항목 |
take |
skip |
역할 |
지정된 수만큼 받기 |
지정된 수만큼 건너뛰기 |
사용 의도 |
처음 일부만 필요할 때 |
처음 일부를 무시하고 싶을 때 |
이벤트 흐름 제어 |
스트림을 조기 종료 |
스트림은 유지되며 중간부터 시작 |