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 완료를 해버려서(목적달성) 그뒤는 더이상 보지 않는 것이다.
더 다양한 케이스는 다음글에서 다루겠다.