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 |
| 역할 |
지정된 수만큼 받기 |
지정된 수만큼 건너뛰기 |
| 사용 의도 |
처음 일부만 필요할 때 |
처음 일부를 무시하고 싶을 때 |
| 이벤트 흐름 제어 |
스트림을 조기 종료 |
스트림은 유지되며 중간부터 시작 |