[RxSwift] Single

 

앞으로 나올 시리즈 목록

  • Single (현재!)
  • dispose -> 왜 누수가 발생하는지?
  • observable / subject
  • subject / relay
  • subscribe / bind / drive
  • publish / behavior

 

 

Single

Single의 내부 구조

 

Single은 RxSwift의 traits 중 하나로, `.success()`와 `failure()` 두 가지 이벤트만 방출한다. `.success()`는 `onNext`와 `onComplete`을 합친 것과 같으며, 값을 포함해서 방출한다. 다만, `.success()`가 `onNext`와 `onComplete`를 합친 것과 같이 동작한다고 해서 event를 `onNext`나 `onComplete`로 전달하게 된다면 오류가 나니 주의해야 한다.

 

추가적으로, Observable에서 시작하여 중간에 asSingle로 바꾼다면 이 역시 문제를 발생하니 주의할 것!

 

,, 근데 traits는 모하는 애들일까? 하고 찾아봤다.

 

traits는 기존의 Observable보다 조금 더 작은 범위의 기능을 수행하는 Observable을 말한다. RxSwift의 traits에는 Single, Completable, Maybe가 있고 RxCocoa의 traits에는 driver, signal, ControlEvent, ControlProperty가 있다.

 

,, ,, 근데 왜 Observable이 있는데 Triats를 나눠놨을까?

 

그야~~!! Observable에서 한 단계 더 나아가서 조금 더 섬세한 기능을 추가했기 때문이다.

 

 

 

Single.create 시 상태 :3

 

Single의 경우에는 성공 시에 하나의 데이터를 받고, 실패했을 때는 하나의 event를 방출하여 네트워크 통신 시 사용이 편리하도록 Observable에서 발전된 형태라고 볼 수 있다. 

또한, side effect를 공유하지 않는다. 이때, side effect란 데이터를 처리 중에 observable 밖으로 데이터를 내보내는 행위를 말하는데, 주로 시퀀스에서 next로 여러 이벤트들이 방출될 때 중간값을 사용할 경우에 사용하므로 단 하나의 데이터를 처리하는 Single이 side effect를 공유하지 않는 것은 어쩌면 당연할 수도 있다. 아예 onNext 자체가 없으니까~~!

헉, 그럼 잠깐! side effect가 공유된다면 그걸로 뭘 할 수 있을까? Observable의 경우, side effect를 통해 받는 값을 통하여 코드의 흐름을 확인하거나 특정 method 실행 전 작업 지정이 가능하다고 한다.

 

아무튼~!

 

Single은 저장을 했느냐 오류를 했느냐처럼 정확히 한 가지 요소만 방출하기 때문에 파일 저장이나 다운로드, 디스크에서 데이터 로딩과 같이 여러 번의 호출이 필요하지 않은 비동기적 연산, 즉 네트워크 통신 시 자주 사용된다.

 

 

 

글구 신기했던 거 ,,

나는 Moya를 이용해서(정확히 하자면 랩핑된 alamofire method를 이용한 거에 가깝지만? 암튼 :3) timeout을 구현했는데, 알고 보니 Single에도 timeInterval 연산자가 있었다~~~!1

 

 

대 충 격 ...

다음에는 이걸 써봐야겠음

 

 

암튼! 오늘 Single 정리하고 더 늦기 전에 다른 RxSwift 개념들을 하나씩 정리해 보려고 한다 ,, ^___^

 

원래는 한 글에 다 몰아넣고 싶었는데 천천히 작성하고 모으등가 해야겠다

 

계속 붙잡고 있다 보면 왠지 의욕이 식어서 쓰기 싫어져가지구 쓸 수 있는 데까지 작성하고 올려놔야겠다.

 

하 막상 쓰고 보니 ㅜㅜ 왜케 부족한 거 같지? 내일 보고 다시 수정하등가 해야겠음... 

 

 

 

 

 

 

 

 

 

참고 자료

https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Traits.md#single

https://reactivex.io/documentation/ko/single.html

 

ReactiveX - Single

 

reactivex.io

https://minsone.github.io/programming/rxswift-single-traits

 

[ReactiveX][RxSwift]Single Trait - 장단점

Single 장점 RxSwift에서는 Single을 지원합니다. Single은 Obvservable의 한 형태이며, 한 가지의 값 또는 에러를 발행합니다. 그렇기에 Single을 구독시 success, error 두 개의 이벤트에 처리를 합니다. func get(p

minsone.github.io

https://kkimin.tistory.com/87

 

Swift Moya 설치 및 내용, RxMoya

URLSession, Alamofire를 사용한뒤, Moya 를 사용해보기로 했다. => 적용하고나서의 나 대만족 우선 알아야되는 사항 13이상부터 가능함. - Moya' has a minimum deployment target of iOS 13.0 설치방법 pod file에 아래를

kkimin.tistory.com

 

https://mrgamza.tistory.com/647

 

iOS. RxSwift Traits에 관하여 알아봅시다. 어렵지 않아요...

사전적인 의미로는 특성이라는 것으로 정의가 되어 있는데요. 쉽게 Rx의 흐름을 방출시킬수 있는 방법을 정의 하는 부분입니다. 가볍게 봐주셔도 됩니다. 거의 모든 분들은 그냥 Observable.create를

mrgamza.tistory.com

https://youbidan-project.tistory.com/189

 

[RxSwift] Traits 와 side effect & Subject 기본

Traits traits은 기존 Observable 보다 좀더 작은 범위의 기능을 수행하는 Observable 이다 필수로 알아야 하는 개념은 아니다 하지만 내가 작성한 코드를 다른 사람이 볼때 좀더 명확하게 볼 수 있다. 꼭

youbidan-project.tistory.com

https://ntomios.tistory.com/11

 

[RxSwift] Single Trait - wrapping network request

Single Trait RxSwift에서는 Single Trait 을 지원합니다. Single은 Observable의 한 형태이며, 한 가지 값 또는 에러를 발행합니다. 따라서 구독 시, success와 error 두 가지의 이벤트에 처리를 할 수 있습니다. 대

ntomios.tistory.com

https://devming.medium.com/single-vs-observable-70b0a504c083

 

[Single] vs [Observable]

RxSwift Single과 Observable에 대한 실험

devming.medium.com

https://clamp-coding.tistory.com/435

 

RxSwift - Single, Maybe, Completable

Single, Maybe, Completable은 다른 옵저버블보다 좁은 범위의 옵저버블이다. 선택적으로 사용할 수 있는데, 이런 좁은범위의 옵저버블을 사용하는 이유는 코드 가독성을 높이는데 있다. Single Single은

clamp-coding.tistory.com

https://its-blog.tistory.com/89

 

RxSwift ] 5. Scheduler, Side Effect

1. Scheduler - Observable은 기본적으로 Async하게 처리가 되지 않기 때문에 메인 쓰레드에서 돌아간다. - 이를 해결하기위해 observeOn 을 사용한다 1) observeOn - 스트림에서 이것을 사용하면 그 다음 줄부

its-blog.tistory.com

https://ios-developer-storage.tistory.com/entry/RxSwift-Traits를-사용하는-이유와-Single-Driver-Signal-예제

 

[RxSwift] Traits를 사용하는 이유와 Single, Driver, Signal 예제

Traits 의 탄생 이유 어떤 이벤트들은 onCompleted나 onError에 걸려도 종료되지 않기를 바랄수도 있다. 예컨대 UI관련이라면 어쩌다 오류가 생긴다고 해도 구독 스트림이 해제되지 않는 것이 유저에게

ios-developer-storage.tistory.com

https://ntomios.tistory.com/11

 

[RxSwift] Single Trait - wrapping network request

Single Trait RxSwift에서는 Single Trait 을 지원합니다. Single은 Observable의 한 형태이며, 한 가지 값 또는 에러를 발행합니다. 따라서 구독 시, success와 error 두 가지의 이벤트에 처리를 할 수 있습니다. 대

ntomios.tistory.com

 

'iOS > App' 카테고리의 다른 글

[iOS] UI Test와 Unit Test  (0) 2023.12.13
[iOS] NavigationBar BackgroundColor 노치까지 채우기  (0) 2023.12.02
[iOS] Push Notification 보내기  (1) 2023.11.13
[iOS] URLSession  (0) 2023.09.01
[CoreLocation] Location  (1) 2023.08.28