본문 바로가기
728x90

분류 전체보기86

[RxSwift] Erro 처리 catch, retry 연산자 OnError 로 처리하면 되지 않낭? Error 이벤트는 Observable 을 종료시키게 된다. 그래서 종료시키지 않고 다음과 같이 이벤트를 발생키시고 completed 가 발생되도록 error handling 을 하고자 하는 것이당! RxSwift 에서는 보통 세가지 방법으로 Error Handling 을 할 수 있다. catch : 특정 값으로 Error 복구 retry : 재시도 하기 materialize / dematerialize : Sequence 를 제어해서 처리 Catch Catch연산자는 Next와 Completed 연산자는 그대로 방출한다. API 요청 코드에서 Catch가 많이 사용된다. Error이벤트가 전달되면 새로운 Observable을 전달한다. 네트워크 에러가 있을 경우,.. 2023. 10. 31.
[RxSwift] Create Operators [2] repeatElement 동일한 요소를 반복적으로 방출하는 옵저버를 생성 while과 비슷, 고로 방출되는 요소의 갯수 꼭 제한해야함 -> 아니면 무한으로 쭈욱 방출 take연산을 이용해 갯수 제한 Observable.repeatElement(element) .take(7) .subscribe { print($0) } .disposed( by: disposebag) deferred 특정 조건에 따라 옵저버블을 생성할 수 있다. if문 사용가능 즉시 옵저버블을 생성하는 create와 달리 구독을 해줘야 옵저버블이 생기기 때문에, 당장은 필요하지 않지만 필요한 상황에 구독하여 생성할 수 있다 네트워크 API에서 결과를 받아와 just처럼 옵저버블을 바로 만들어 주는 경우도 있지만, deferred를 통해 구.. 2023. 10. 30.
[RxSwift] Create Operators [1] just, of, from just : 하나의 항목을 방출하는 Observable을 생성 ObservableTypeProtocol에 타입메서드로 선언되어있다. 파라미터로 하나의 요소를 받고 Observable로 리턴 파라미터로 전달된 요소를 그대로 방출! let element = "jife" Observable.just(element) .subcribe { event in print(event) } .disposed( by: disposebag) //next(jife) //completed //출력값 Observable.just([1,2,3]) .subcribe { event in print(event) } .disposed( by: disposebag) //next([1,2,3]) //completed.. 2023. 10. 29.
[RxSwift] Relay Relay Relay는 Subject와 유사한 특징을 갖고있으며, 내부에 Subject를 맵핑하고있다. Relay는 RxCocoa에서 제공하는 기능이다. Subject와 유사하게 이벤트를 받아 구독자에게 전달한다. 차이점은 Next 이벤트만 전달한다. completed와 error는 받지도, 전달하지도 않는다. 구독자가 dispose되기 전까지, 계속 이벤트를 처리한다. 그래서 주로UI이벤트에 많이 사용된다. Relay에게 전달할때는 accept 를 사용 PublishRelay 빈 생성자로 PublishSubject와 동일하게 생성한다. 아래처럼 동일하게 구독하고 이벤트를 전달하면 된다. let pr = PublishRelay() pr.subscribe { print("1: \($0)") } dispo.. 2023. 10. 29.
[RxSwift] Subject Subject Subject를 이해하기위해서는 Observable과 Observer를 먼저 이해야한다. Subject는 Observable인 동시에, Observer이다. Observable는 다른 Observable를 구독 못함, Observer 또한 이벤트를 다른 Observer에 전달 못함 반면, Subject는 다른 Observable로 부터 이벤트를 전달받아, 구독 가능 PublishSubject 빈 상태로 생성되고, 새로운 element가 subscribe 이후의 event만 subscriber에게 전달된다. BehaviorSubject PublishSubject와 달리 기본값을 가진 채로 생성되고, 초기값 혹은 최신 element 값을 방출한다. ReplaySubject 정해진 buffer .. 2023. 10. 29.
[Swift] Concurrency [2] async & await async: 비동기 함수임을 나타낸다. await: async 키워드가 표시된 메소드나 함수의 리턴을 기다린다. 즉, async 함수는 비동기적으로 동작할 수 있고, await 키워드를 사용해 비동기 함수의 결과를 대기할 수 있습니다. func loadWebResource(_ path: String) async throws -> Resource func decodeImage(_ r1: Resource, _ r2: Resource) async throws -> Image func dewarpAndCleanupImage(_ i : Image) async throws -> Image func processImageData() async throws -> Image { let dataR.. 2023. 10. 25.
728x90
반응형