RxSwift시작하기1-3

작성일

이제 다양한 케이스들을 보면서 공부해야한다.

import UIKit
import RxSwift

let disposeBag = DisposeBag()

let subject = PublishSubject<String>()

subject.onNext("Issue 1")

subject.subscribe { event in
    print(event)
}

subject.onNext("Issue 2")
subject.onNext("Issue 3")

이러면 출력결과가

Issue 2
Issue 3 

밖에 출력이 안된다.
그 이유는 subscribe즉 구독을 안해서 그런것이다. 구독하기전에 추가한 Issue 1은 보이지않는것이다. 따라서 구독한후에 onNext로 접근해야 그 구독이보인다.

다른케이스는

let disposeBag = DisposeBag()

let subject = PublishSubject<String>()

subject.onNext("Issue 1")

subject.subscribe { event in
    print(event)
}

subject.onNext("Issue 2")
subject.onNext("Issue 3")

subject.dispose()

subject.onNext("Issue 4")

이건데 이러면, 위 코드와 똑같이

Issue 2
Issue 3 

이렇게 밖에 나오지 않는데 그이유는 이미 subject.dispose() 를해서 구독을 해제해 버린것이다.
따라서 Issue 4는 알람이 오지 않는것이다.

다음 케이스는

let disposeBag = DisposeBag()

let subject = PublishSubject<String>()

subject.onNext("Issue 1")

subject.subscribe { event in
    print(event)
}

subject.onNext("Issue 2")
subject.onNext("Issue 3")

subject.onCompleted()

subject.onNext("Issue 4")

위 코드도

Issue 2
Issue 3
completed

이렇게 밖에 나타나질 않는데, 그 이유는 completed 완료를 해버려서(목적달성) 그뒤는 더이상 보지 않는 것이다.
더 다양한 케이스는 다음글에서 다루겠다.