Mobile/iOS

RxSwift의 take operators

out of coding 2018. 6. 11. 12:25

take 시리즈는 어떠한 조건에 대해서만 값을 전달받겠다는 것으로, 조건에 맞는 값들이 들어오면 통과되고 조건이 맞지 않게 되면 이후의 값들을 받지 않습니다.


1. take(_:)


처음부터 발생하는 n개의 이벤트만을 받고 나머지는 무시하게 되는 operator


2. takeWhile(_:)


filter와 거의 흡사한 부분이 있는 operator로 조건에 맞는 이벤트는 통과를 하게 됩니다.

그러나 조건에 맞지 않는 이벤트를 만나게 되면 이후 이벤트도 모두 무시하게 됩니다.


3. takwUntil(_:)


위의 takeWhile은 조건을 사용하였다고 한다면, 하나의 trigger 흐름이 더 필요한 operator입니다.

그래서 trigger 흐름이 발생하게 되면 이후의 조건들이 다 동작을 안하게 됩니다.

trigger 흐름이 발생하기 전까지만 원래의 흐름은 동작하게 됩니다.


이것으로 deallocated를 이용하면 다음과 같아집니다.


1
2
3
4
5
original
    .takeUntil(self.rx.deallocated)
    .subscribe(onNext: {
        // brabra
    })
cs


class인 self가 deallocated 되면 이후에는 아무것도 받지 않게 됩니다.