RxSwift추가개념2-3

작성일

Skip

간단하게 말하면 건느 뛰는 것이다.
단, 여기에선 인덱스 번호가 아니라 개수를 적어주는 것이다.

import UIKit
import RxCocoa
import RxSwift

let disposeBag = DisposeBag()

Observable.of("A","B","C","D","E","F")
    .skip(2)
    .subscribe(onNext: {
        print($0)
    }).disposed(by: disposeBag)

출력해보면

C
D
E
F

이런식으로 앞에 2개를 건너뛰고 C부터 출력되는걸 볼 수 있다.

SkipWhile

특정 조건을 가진 값을 통과하기 전까지 스킵을 하고,
특정조건을 달성하면, 그뒤에껀 모두 출력을 한다.

import UIKit
import RxCocoa
import RxSwift

let disposeBag = DisposeBag()

Observable.of(2,2,3,4,4)
    .skip(while: { $0 % 2 == 0 })
    .subscribe(onNext: {
        print($0)
    }).disposed(by: disposeBag)

출력해보면,

3
4
4

이렇게 출력된다. 보면 0으로 나누어 떨어져서 3부터 3, 4, 4 가 출력되는 것이다.

SkipUntil

코드부터 살펴보면,

import UIKit
import RxCocoa
import RxSwift

let disposeBag = DisposeBag()

let subject = PublishSubject<String>()
let trigger = PublishSubject<String>()

subject.skip(until: trigger)
    .subscribe(onNext:{
        print($0)
    }).disposed(by: disposeBag)

subject.onNext("A")
subject.onNext("B")

trigger.onNext("X")

subject.onNext("C")
subject.onNext("D")

trigger에 값이 추가되기 전까지 subject의 값은 출력되지 않는다.
trigger의 값이 추가되면 그때, subject의 값이 출력된다.

C
D

출력해본걸 보면 자세히알 수 있다.