take

Observable이 처음 방출한 n개의 항목만 방출한다.

스크린샷 2024-06-28 오전 12.51.06.png

1, 2, 3, 4 가 방출되었지만 take(2)로 처음 2개의 이벤트만 방출한다. takeLast는 그 반대의 개념이라 생략

코드

Observable.from([1, 2, 3, 4])
    .take(2)
    .subscribe(onNext: { num in
        print(num)
    })
    .disposed(by: disposeBag)

next 이벤트로 1, 2가 방출되고 complted가 호출된뒤 Dispose 된다.

takeWhile

특정 조건이 false가 되고나면 그 이후의 모든 이벤트를 폐기한다.

스크린샷 2024-06-28 오전 12.56.46.png

스크린샷 2024-06-28 오전 12.57.58.png

파라미터로 Bool을 리턴하는 파라미터를 전달받는다.

코드

Observable.from([1, 2, 3, 4])
    .takeWhile { !$0.isMultiple(of: 2) }
    .debug()
    .subscribe(onNext: { num in
        print(num)
    })
    .disposed(by: disposeBag)

뭔가 1, 3 이 전달될것 같지만 1만 전달되고 시퀀스가 종료된다. TakeWhile은 클로저의 조건을 만족하지 못하면 그 이후의 모든 이벤트를 폐기한다.

takeUntil

스크린샷 2024-06-28 오전 1.03.57.png