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 되면 이후에는 아무것도 받지 않게 됩니다.