-
RxSwift SubjectRxSwift 2021. 7. 9. 10:32
보통 변수로 선언해야할때 사용합니다.
위의 말은 저장해두고, 계속 접근해서 뭔가 변경이 일어난다거나 등등의 일이 일어날 경우를 말한다. (그럴 필요가 없다면? Observable을 고려해 보자)
Subject
4가지가 있습니다. 각각 subscribe 한 애한테 어떤식으로 전달하는지 보면됩니다.
BehaviorSubject : subscribe 하면 이벤트 발생을 알려주는건 public과 동일, 다른점은 오로지 초기값!
=> 즉 publisSubject이랑 비슷하지만 초기값을 가지고 있다고 보면 됨. subscribe 했을때 즉시 현재 저장된 값을 이벤트로 발생하고 이벤트를 전달함. (다른말로 하면 마지막 이벤트 값이 저장된다고 보면 됩니다.<- 이런 관점도 있음..!!)
error 시에도 마지막 error를 전달함
PublishSubject : Behavior 와 비슷하지만, subscribe 했다고 일이 일어나는게 아니고, observable에 일어나야 전달
subscribe 된 시점 이후부터 발생된 이벤트를 전달함.
ReplaySubject : 말그대로 subscribe 하면 다시 한번, history를 전달한다.
(몇개든 n개의 이벤트를 저장했다가 모두 전달함, create(bufferSize: Int) 로 하면 bufferSize 만큼 저장해두었다가 전달하고, createUnbounded() 는 모든걸 전달한다. 그러나 메모리 관리에 유의해야함)
AsyncSubject : Completed 즉 끝나야만 값을 전달받고 마지막 결과만 받는다.
complete 되면 마지막 이벤트 발 생 후 종료됨 (error시 바로 에러 - 마지막 이벤트 전달 무시) * 마지막이 포인트
일단, 마블을 살펴 봤으니 더 깊게 알아보자.
Subject란 Observable이자 Observer의 성격을 지니고 있다. 동적으로 값을 발행할 수 있고 구독하고 있는 Observer들에게 값을 발행할 수 있다. (multi 오...)
BehaviorRelay
728x90'RxSwift' 카테고리의 다른 글
RxSwift Observable (0) 2021.07.14 RxSwift 스터디 계획 따라가기 (0) 2021.07.12 Rxswift Debounce / Throttle (0) 2021.06.29 Rxswift (map, flatmap, compactmap) 정리 (0) 2021.06.28 Rxswift (flatMap, flatMapFirst, flatMapLatest) (0) 2021.06.24