iOS/RxSwift

    [RxSwift] Relay

    Relay도 Subject처럼 다른 Observable로부터 이벤트를 받아서 Subscriber로 전달할 수도 있다. Observable인 동시에 Observer이다. PublishRelay: PublishSubject Wrapping BehaviorRelay: BehaviorSubject Wrapping ReplayRelay: ReplaySubject Wrapping (RxSwift 6+) Next 이벤트만 받고 Error와 Completed 이벤트는 받지 않는다. 주로 종료없이 계속 전달되는 이벤트 Sequence를 처리할 때 활용한다. Next 이벤트만 다룬다. Error와 Completed 이벤트는 전달받지도 전달하지도 않는다. 그렇기 때문에 종료되지 않는다. Subscriber가 Dispose되..

    [RxSwift] Subject - AsyncSubject

    [RxSwift] Subject - AsyncSubject

    let asyncSubject = AsyncSubject() Completed 이벤트가 전달되었을때 마지막 Next 이벤트를 Subscriber에게 전달한다. asyncSubject .subscribe { print("AsyncSubject 1", $0) } .disposed(by: disposeBag) asyncSubject.onNext(1) asyncSubject.onNext(3) asyncSubject.onNext(5) Completed 이벤트가 없기 때문에 Subscriber에게 이벤트가 전달되지 않는다. asyncSubject.onNext(4) asyncSubject.onError(MyError.error) // Output AsyncSubject 1 next(4) AsyncSubject 1 c..

    [RxSwift] Subject - ReplaySubject

    [RxSwift] Subject - ReplaySubject

    let replaySubject = ReplaySubject.create(bufferSize: 3) // 3개의 마지막 이벤트를 저장 ReplaySubject는 마지막으로 전달된 n개의 이벤트를 버퍼에 저장한다. [1,2,3,4,5,6,7,8,10].forEach { replaySubject.onNext($0) } replaySubject.subscribe { print("ReplaySubject 1", $0) } .disposed(by: disposeBag) // Output ReplaySubject 1 next(8) ReplaySubject 1 next(9) ReplaySubject 1 next(10) 마지막 3개의 이벤트를 저장했기 때문에 Subscriber가 추가되자마자 10개 중 마지막 3개의 ..

    [RxSwift] Subject - BehaviorSubject

    [RxSwift] Subject - BehaviorSubject

    PublishSubject와의 차이점 let publishSubject = PublishSubject() publishSubject.subscribe { print("PublishSubject >>", $0) } .disposed(by: disposeBag) 위 코드는 Observer가 Subscribe한 이후 전달되는 이벤트가 없기 때문에 print가 호출되지 않는다. BehaviorSubject는 구독 시점에 가장 최근에 배출된 항목을 배출한다. let behaviorSubject = BehaviorSubject(value: 0) behaviorSubject.subscribe { print("BehaviorSubject 1", $0) } .disposed(by: disposeBag) // Output..

    [RxSwift] Subject - PublishSubject

    [RxSwift] Subject - PublishSubject

    Observable은 다른 Observable를 Subscribe하지 못하고, Observer는 다른 Observer로 이벤트를 전달하지 못한다. Subject는 다른 Observable로 부터 이벤트를 받아서 Subscriber로 전달할 수 있다. Observable인 동시에 Observer인 셈이다. Subject의 종류 PublishSubject: Subject로 전달되는 새로운 이벤트를 Subscriber로 전달한다. BehaviorSubject: 생성시점에 시작 이벤트를 지정하고, Subject로 전달되는 이벤트 중에 가장 마지막에 전달된 최신 이벤트를 저장해두었다가 새로운 Subject에게 최신 이벤트를 전달한다. ReplaySubject: 하나 이상의 최신 이벤트를 버퍼에 저장한다. Obse..