RxSwift시작하기1-4

작성일

더욱 더 다양한 케이스를 살펴보면

1번쨰

let disposeBag = DisposeBag()

let subject = BehaviorSubject(value: "Initial Value")

subject.subscribe { envet in
    print(envet)
}

이런식으로 BehaviorSubject에 값을 담으면, next(Initial Value) 이런식으로 관찰하자마자 값을 볼 수 있다.

2번쨰

let disposeBag = DisposeBag()

let subject = BehaviorSubject(value: "Initial Value")

subject.onNext("마지막 이슈")

subject.subscribe { envet in
    print(envet)
}

subject.onNext("이슈 1")

를 출력해보면

next(마지막 이슈)
next(이슈 1)

가 나오는데, 이런식으로 알람(subscribe)앞에 .onNext를 써버리면, BehaviorSubject값이 나오지 않는다.
그리고 subscribe에 가장 가까운 onNext값을 출력해준다.

3번째

let disposeBag = DisposeBag()

let subject = ReplaySubject<String>.create(bufferSize: 2)
// 해당주제에서 방출된 마지막 두개의 값을 나타내준다.

subject.onNext("이슈 1")
subject.onNext("이슈 2")
subject.onNext("이슈 3")

subject.subscribe { event in
    print(event)
}

subject.onNext("이슈 4")
subject.onNext("이슈 5")
subject.onNext("이슈 6")

print("[sub 스크 2]")

subject.subscribe { event in
    print(event)
}

출력해보면

next(이슈 2)
next(이슈 3) //여기까지 3개중에 1버리고 2개출력 그리고 
next(이슈 4) //여기서부턴 이슈 추가해주고
next(이슈 5)
next(이슈 6)
[sub 스크 2]
next(이슈 5) //여기서부턴 다시 지금까지 출력된 이슈중에 마지막 2개출력
next(이슈 6)

이런 식으로 출력이 된다.