반응형

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

+ Recent posts