반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- NavigationLink
- init?
- RxSwift
- SWIFT
- operator
- Creating Operators
- graphql
- Operators
- Bug
- @EnvironmentObject
- RFC1738/1808
- @Environment
- subject
- Operater
- @State
- nestjs
- swift6
- Xcode
- RxCocoa
- vim
- @Binding
- URL(string:)
- SwiftUI
- dismiss
- nonisolated
- init
- IOS
- NullObject
- typeorm
- ios14
Archives
- Today
- Total
Tunko Development Diary
RxSwift) BehaviorSubject 란? 본문
BehaviorSubject는 기능상으로 PublishSubject와 큰 차이가 없습니다. 하지만 생성 및 구독을 할때 차이가 있습니다.
바로 예제 코드와 로그를 통해 알아보겠습니다.
let disposeBag = DisposeBag()
enum MyError: Error {
case error
}
let publishSubject = PublishSubject<Int>()
publishSubject.subscribe {print("publishSubject : \\($0)")}
publishSubject.disposed(by: disposeBag)
let behaviorSubject = BehaviorSubject<Int>(value: 1)
behaviorSubject.subscribe {print("behaviorSubject : \\($0)")}
behaviorSubject.disposed(by: disposeBag)
출력
behaviorSubject : next(1)
이대로 실행하면 저렇게 출력됩니다.
여기서 publishSubject와 차이점이 두드러집니다. behaviorSubject는 생성을 할때 value에 1을 전달합니다. 그렇기 때문에 구독과 동시에 가지고있던 인자를 이벤트로 전달합니다.
이 상태에서 onNext로 이벤트를 전달합니다.
let behaviorSubject = BehaviorSubject<Int>(value: 1)
behaviorSubject.subscribe {print("behaviorSubject : \\($0)")}
behaviorSubject.disposed(by: disposeBag)
behaviorSubject.onNext(2)
출력
behaviorSubject : next(1)
behaviorSubject : next(2)
그렇다면 새로운 해당 Subject를 새로 구독을 하면 어떻게 되는지 확인해 봅니다.
let behaviorSubject = BehaviorSubject<Int>(value: 1)
behaviorSubject.subscribe {print("behaviorSubject : \\($0)")}
behaviorSubject.disposed(by: disposeBag)
behaviorSubject.onNext(2)
// 새로운 구독
behaviorSubject.subscribe {print("behaviorSubject 2 : \\($0)")}
출력
behaviorSubject : next(1)
behaviorSubject : next(2)
behaviorSubject 2 : next(2)
결과를 보면 알 수 있듯이 기존 구독중인 최종 이벤트 인자가 초기값으로 방출된것을 확인 할 수 있습니다.
반응형
'Development > RxSwift' 카테고리의 다른 글
RxSwift) AsyncSubject 란? (0) | 2022.05.30 |
---|---|
RxSwift) ReplaySubject 란? (0) | 2022.05.30 |
RxSwift) PublishSubject 란? (0) | 2022.05.30 |
Subject 란? (0) | 2022.05.30 |
RxSwift) Operators 란? (0) | 2022.05.30 |
Comments