[RxSwift] Take

2019-12-10

역할

Observable에서 내보낸 아이템 중, 처음 n개의 아이템만 내보냅니다.

Take

예제

[코드]

Observable.of(1,2,3,4)
	.take(2)
	.debug()
	.subscribe()

[실행 결과]

-> subscribed
-> Event next(1)
-> Event next(2)
-> Event completed
-> isDisposed

구독 후 Observable의 아이템 1, 2, 3, 4 를 모두 내보내는 것이 아니라 그중 처음 2개 아이템인 1과 2만 내보낸 후 종료되는 것을 확인할 수 있습니다.

활용

주로 단 1개의 아이템만 내보내는 것을 보장하기 위해 take(1) 형태로 사용됩니다.

아이템이 여러번 방출될 수 있는 Observable에서 한번만 방출 되도록 제한하거나, 다음과 같이 flatMap에서 새로운 Observable이 생성될 때 한번만 생성되도록 조합해 사용합니다.

Observable
.flatMap { anotherObservable.take(1) }

[참 고]