반응형
RxSwift - BehaviorSubject
BehaviorSubject는 Subject중 하나로, 최초 구독을 당하는 시점에 이전에 방출 된 값이 없다면 BehaviorSubject의 초기값을 방출하고 이미 방출 된 값이 있다면 최근의 값을 방출하는 Subject이다.
// 3이란 초기값을 가진 BehaviorSubject를 생성
let behaviorSubject = BehaviorSubject(value: 3)
// 처음으로 구독하는 observer는 3의 값을 방출
behaviorSubject.subscribe { value in
print("First subscriber gets value: \(value)")
}
// 10의 값을 방출
behaviorSubject.onNext(10)
print("BehaviorSubject has already sent 10!")
// 두번째로 구독하는 observer는 가장 최근의 값인 10을 방출 함
behaviorSubject.subscribe { value in
print("Second subscriber gets value: \(value)")
}
// 두개의 observer가 75를 동시에 방출
behaviorSubject.onNext(75)
실행 결과
First subscriber gets value: next(3)
First subscriber gets value: next(10)
BehaviorSubject has already sent 10!
Second subscriber gets value: next(10)
First subscriber gets value: next(75)
Second subscriber gets value: next(75)
추가적으로, 중간에 만약 Error가 방출된다면 그 후 observer에겐 계속 Error를 전달하게 된다.
반응형
'iOS > Swift' 카테고리의 다른 글
[Swfit] Swift는 무엇일까? (1) | 2023.02.24 |
---|