티스토리 뷰

반응형

https://medium.com/gett-engineering/rxswift-share-ing-is-caring-341557714a2d 

 

RxSwift: share()-ing is Caring - Gett Engineering - Medium

RxSwift resource sharing can be hard. Learn about share(), which lets you define streams that share resources among their subscribers.

medium.com

설명이 너무 감동적..🥺

 

share란 publish와 같은 컨셉인데, 옵져버블 공유를 위한 연산자이다

 

하지만 publish와 다르게 connect가 필요없다...! (👍)

그리고 publish는 옵져버블이 끝나도 이벤트를 공유하는 반면,
share는 scope에 forever를 주면 옵져버블이 끝나도 이벤트를 공유하고 whileConnected를 주면 옵져버블이 끝나면 이벤트를 공유하지 않는다는 점이 다르다 

 

share를 쓰지 않았을 때

share를 쓸 때 

 

위의 블로그에서 나온 것처럼 

API를 한번 콜하고 그 콜한 결과를 여러 곳에서 구독하여 다르게 쓰고 싶을때 주요 사용하는 것 같다 :-) 

한번 subscribe해서 그 안에서 필요한 처리를 다해주는 것에 비해 이 방식의 장점이 있을 것 같지만.. 뚜렷히 잘모르겠당 @.@ 

 

API콜하고 결과받아오는 옵져버블에 share()를 붙여서 그 옵져버블에 map해가지구 value를 받는 옵져버블, error를 받는 옵져버블을 각각 만들고 각각을 구독하여 다른 작업을 해주는 코드를 본 적있는데 코드 블럭 블럭이 굉장히 짧아져서 좋았지만 어떻게 보면 직관적으로 다가오지 않았다 한 블럭에서 switch로 value와 error 처리를 한 눈에 보이게 처리해주는 게 좀 더 눈에 잘들어오는 것 같기도 하다...!!! But 아직 판단하지 않겠어!!! 🦊

share의 파라미터 

위의 블로그에 각 의미가 자세히 나와있다..! 굿굿 리얼 굿굿

share() 는 기본으로 이렇게 설정되어있음

share(replay: Int = 0, scope: RxSwift.SubjectLifetimeScope = .whileConnected)
반응형
댓글