-
RxSwift - 3.SubjectsRxSwift 2023. 3. 2. 16:57
Subjects
Subjects란
Subjects는 Observable과 Observer의 역할을 모두 수행할 수 있는 타입입니다.
Subjects의 종류
- PublishSubject
- 초기값이 없으며, 구독이 된 후 새로운 값만 emit합니다.
- BehaviorSubject
- 초기값이 있으며, 구독이 됐을 때 현재의 값을 emit합니다.
- ReplaySubject
- 정해진 크기의 값들을 가지고 있다가 구독이 됐을 때 가지고 있는 값들을 emit합니다.
- AsyncSubject
- completed 이벤트가 발생했을 때, 가장 마지막 값을 emit합니다.
- PublishRelay, BehaviorRelay
- next 이벤트만 발생하며, 다른 특징은 PublishSubject와 BehaviorSubject과 각각 동일합니다.
1.PublishSubject
PublishSubject는 초기값이 없는 Subject로 subscribe한 후 emit된 값만 받을 수 있습니다. 단, subscribe하기전에 발생한 onError, onCompleted이벤트의 경우 수신할 수 있습니다.
2.BehaviorSubject
BevaiorSubject는 초기값이 있는 Subject입니다. subscribe하면 가장 최신에 emit된 값 또는 초기값의 받을 수 있습니다. 단, subscribe하기전에 발생한 onError, onCompleted이벤트의 경우 onError, onCompleted이벤트만 수신할 수 있습니다.
3.ReplaySubject
ReplaySubject는 정해진 크기만큼 emit된 값들을 저장하고 있으며, subscribe하면 그 크기만큼 저장된 값들을 받을 수 있습니다.
4.AsyncSubject
AsyncSubject는 completed 이벤트가 발생했을 때 emit한 마지막 값을 emit합니다.(emit된 값이 없으면 아무 값도 emit하지 않습니다.) 또한, error이벤트가 발생하게 되면 아무 값도 emit하지 않습니다.
- Complete
- Error
참조
RxSwift Reactive Programming with Swift thirdnbsped by raywenderlich team's book
'RxSwift' 카테고리의 다른 글
RxSwift - 4.Hot Observable, Cold Observable (0) 2023.03.03 RxSwift - 2.Observable (0) 2023.02.28 RxSwift - 1.Reactive Programming, RxSwift 개념 (0) 2023.02.27 Functional Programming (0) 2023.02.24 - PublishSubject